<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="robots" content="noindex">

	<title>File </title>

	<link rel="stylesheet" href="resources/bootstrap.min.css?973e37a8502921d56bc02bb55321f45b072b6f71">
	<link rel="stylesheet" href="resources/style.css?70c1d062672daa3f906b72e4f5d03d4bc5c4174d">

</head>

<body>
	<nav id="navigation" class="navbar navbar-default navbar-fixed-top">
		<div class="container-fluid">
			<div class="navbar-header">
				<a href="index.html" class="navbar-brand">Overview</a>
			</div>
			<div class="collapse navbar-collapse">

                <form id="search" class="navbar-form navbar-left" role="search">
                    <input type="hidden" name="cx" value="">
                    <input type="hidden" name="ie" value="UTF-8">
                    <div class="form-group">
                        <input type="text" name="q" class="search-query form-control" placeholder="Search">
					</div>
				</form>

				<ul class="nav navbar-nav">
					<li>
<span>Class</span>					</li>





				</ul>
			</div>
		</div>
	</nav>

	<div id="left">
	<div id="menu">

		<div id="groups">
		</div>


		<div id="elements">
			<h3>Classes</h3>
			<ul>
				<li><a href="class-hQuery.html">hQuery</a></li>
				<li><a href="class-hQuery_Element.html">hQuery_Element</a></li>
				<li><a href="class-hQuery_HTML_Parser.html">hQuery_HTML_Parser</a></li>
				<li><a href="class-hQuery_Node.html">hQuery_Node</a></li>
			</ul>





		</div>
	</div>
</div>

<div id="splitter"></div>

<div id="right">
	<div id="rightInner">
<div id="source">
	<pre class="numbers"><code><span class="l"><a href="#1">   1 </a></span><span class="l"><a href="#2">   2 </a></span><span class="l"><a href="#3">   3 </a></span></span><span class="l"><a href="#4">   4 </a></span></span><span class="l"><a href="#5">   5 </a></span></span><span class="l"><a href="#6">   6 </a></span></span><span class="l"><a href="#7">   7 </a></span></span><span class="l"><a href="#8">   8 </a></span></span><span class="l"><a href="#9">   9 </a></span></span><span class="l"><a href="#10">  10 </a></span></span><span class="l"><a href="#11">  11 </a></span></span><span class="l"><a href="#12">  12 </a></span></span><span class="l"><a href="#13">  13 </a></span></span><span class="l"><a href="#14">  14 </a></span></span><span class="l"><a href="#15">  15 </a></span></span><span class="l"><a href="#16">  16 </a></span></span><span class="l"><a href="#17">  17 </a></span></span><span class="l"><a href="#18">  18 </a></span></span><span class="l"><a href="#19">  19 </a></span></span><span class="l"><a href="#20">  20 </a></span></span><span class="l"><a href="#21">  21 </a></span></span><span class="l"><a href="#22">  22 </a></span></span><span class="l"><a href="#23">  23 </a></span></span><span class="l"><a href="#24">  24 </a></span></span><span class="l"><a href="#25">  25 </a></span><span class="l"><a href="#26">  26 </a></span><span class="l"><a href="#27">  27 </a></span><span class="l"><a href="#28">  28 </a></span></span><span class="l"><a href="#29">  29 </a></span></span><span class="l"><a href="#30">  30 </a></span></span><span class="l"><a href="#31">  31 </a></span></span><span class="l"><a href="#32">  32 </a></span><span class="l"><a href="#33">  33 </a></span><span class="l"><a href="#34">  34 </a></span><span class="l"><a href="#35">  35 </a></span><span class="l"><a href="#36">  36 </a></span><span class="l"><a href="#37">  37 </a></span><span class="l"><a href="#38">  38 </a></span><span class="l"><a href="#39">  39 </a></span><span class="l"><a href="#40">  40 </a></span><span class="l"><a href="#41">  41 </a></span><span class="l"><a href="#42">  42 </a></span><span class="l"><a href="#43">  43 </a></span><span class="l"><a href="#44">  44 </a></span><span class="l"><a href="#45">  45 </a></span><span class="l"><a href="#46">  46 </a></span><span class="l"><a href="#47">  47 </a></span><span class="l"><a href="#48">  48 </a></span><span class="l"><a href="#49">  49 </a></span><span class="l"><a href="#50">  50 </a></span><span class="l"><a href="#51">  51 </a></span><span class="l"><a href="#52">  52 </a></span><span class="l"><a href="#53">  53 </a></span><span class="l"><a href="#54">  54 </a></span><span class="l"><a href="#55">  55 </a></span><span class="l"><a href="#56">  56 </a></span><span class="l"><a href="#57">  57 </a></span><span class="l"><a href="#58">  58 </a></span><span class="l"><a href="#59">  59 </a></span><span class="l"><a href="#60">  60 </a></span><span class="l"><a href="#61">  61 </a></span><span class="l"><a href="#62">  62 </a></span><span class="l"><a href="#63">  63 </a></span><span class="l"><a href="#64">  64 </a></span><span class="l"><a href="#65">  65 </a></span><span class="l"><a href="#66">  66 </a></span><span class="l"><a href="#67">  67 </a></span><span class="l"><a href="#68">  68 </a></span><span class="l"><a href="#69">  69 </a></span><span class="l"><a href="#70">  70 </a></span><span class="l"><a href="#71">  71 </a></span><span class="l"><a href="#72">  72 </a></span><span class="l"><a href="#73">  73 </a></span><span class="l"><a href="#74">  74 </a></span><span class="l"><a href="#75">  75 </a></span><span class="l"><a href="#76">  76 </a></span><span class="l"><a href="#77">  77 </a></span><span class="l"><a href="#78">  78 </a></span><span class="l"><a href="#79">  79 </a></span><span class="l"><a href="#80">  80 </a></span><span class="l"><a href="#81">  81 </a></span><span class="l"><a href="#82">  82 </a></span><span class="l"><a href="#83">  83 </a></span><span class="l"><a href="#84">  84 </a></span><span class="l"><a href="#85">  85 </a></span><span class="l"><a href="#86">  86 </a></span><span class="l"><a href="#87">  87 </a></span><span class="l"><a href="#88">  88 </a></span><span class="l"><a href="#89">  89 </a></span><span class="l"><a href="#90">  90 </a></span><span class="l"><a href="#91">  91 </a></span><span class="l"><a href="#92">  92 </a></span><span class="l"><a href="#93">  93 </a></span><span class="l"><a href="#94">  94 </a></span><span class="l"><a href="#95">  95 </a></span><span class="l"><a href="#96">  96 </a></span><span class="l"><a href="#97">  97 </a></span><span class="l"><a href="#98">  98 </a></span><span class="l"><a href="#99">  99 </a></span><span class="l"><a href="#100"> 100 </a></span><span class="l"><a href="#101"> 101 </a></span><span class="l"><a href="#102"> 102 </a></span><span class="l"><a href="#103"> 103 </a></span><span class="l"><a href="#104"> 104 </a></span><span class="l"><a href="#105"> 105 </a></span><span class="l"><a href="#106"> 106 </a></span><span class="l"><a href="#107"> 107 </a></span><span class="l"><a href="#108"> 108 </a></span><span class="l"><a href="#109"> 109 </a></span><span class="l"><a href="#110"> 110 </a></span><span class="l"><a href="#111"> 111 </a></span><span class="l"><a href="#112"> 112 </a></span><span class="l"><a href="#113"> 113 </a></span><span class="l"><a href="#114"> 114 </a></span><span class="l"><a href="#115"> 115 </a></span><span class="l"><a href="#116"> 116 </a></span><span class="l"><a href="#117"> 117 </a></span><span class="l"><a href="#118"> 118 </a></span><span class="l"><a href="#119"> 119 </a></span><span class="l"><a href="#120"> 120 </a></span><span class="l"><a href="#121"> 121 </a></span><span class="l"><a href="#122"> 122 </a></span><span class="l"><a href="#123"> 123 </a></span><span class="l"><a href="#124"> 124 </a></span><span class="l"><a href="#125"> 125 </a></span><span class="l"><a href="#126"> 126 </a></span><span class="l"><a href="#127"> 127 </a></span><span class="l"><a href="#128"> 128 </a></span><span class="l"><a href="#129"> 129 </a></span><span class="l"><a href="#130"> 130 </a></span></span><span class="l"><a href="#131"> 131 </a></span></span><span class="l"><a href="#132"> 132 </a></span><span class="l"><a href="#133"> 133 </a></span><span class="l"><a href="#134"> 134 </a></span><span class="l"><a href="#135"> 135 </a></span><span class="l"><a href="#136"> 136 </a></span><span class="l"><a href="#137"> 137 </a></span><span class="l"><a href="#138"> 138 </a></span><span class="l"><a href="#139"> 139 </a></span><span class="l"><a href="#140"> 140 </a></span><span class="l"><a href="#141"> 141 </a></span><span class="l"><a href="#142"> 142 </a></span><span class="l"><a href="#143"> 143 </a></span><span class="l"><a href="#144"> 144 </a></span><span class="l"><a href="#145"> 145 </a></span><span class="l"><a href="#146"> 146 </a></span><span class="l"><a href="#147"> 147 </a></span><span class="l"><a href="#148"> 148 </a></span></span><span class="l"><a href="#149"> 149 </a></span></span><span class="l"><a href="#150"> 150 </a></span><span class="l"><a href="#151"> 151 </a></span><span class="l"><a href="#152"> 152 </a></span><span class="l"><a href="#153"> 153 </a></span><span class="l"><a href="#154"> 154 </a></span><span class="l"><a href="#155"> 155 </a></span><span class="l"><a href="#156"> 156 </a></span><span class="l"><a href="#157"> 157 </a></span><span class="l"><a href="#158"> 158 </a></span><span class="l"><a href="#159"> 159 </a></span><span class="l"><a href="#160"> 160 </a></span><span class="l"><a href="#161"> 161 </a></span><span class="l"><a href="#162"> 162 </a></span><span class="l"><a href="#163"> 163 </a></span><span class="l"><a href="#164"> 164 </a></span><span class="l"><a href="#165"> 165 </a></span><span class="l"><a href="#166"> 166 </a></span><span class="l"><a href="#167"> 167 </a></span><span class="l"><a href="#168"> 168 </a></span><span class="l"><a href="#169"> 169 </a></span><span class="l"><a href="#170"> 170 </a></span></span><span class="l"><a href="#171"> 171 </a></span></span><span class="l"><a href="#172"> 172 </a></span><span class="l"><a href="#173"> 173 </a></span><span class="l"><a href="#174"> 174 </a></span><span class="l"><a href="#175"> 175 </a></span><span class="l"><a href="#176"> 176 </a></span><span class="l"><a href="#177"> 177 </a></span></span><span class="l"><a href="#178"> 178 </a></span></span><span class="l"><a href="#179"> 179 </a></span><span class="l"><a href="#180"> 180 </a></span><span class="l"><a href="#181"> 181 </a></span><span class="l"><a href="#182"> 182 </a></span><span class="l"><a href="#183"> 183 </a></span><span class="l"><a href="#184"> 184 </a></span><span class="l"><a href="#185"> 185 </a></span><span class="l"><a href="#186"> 186 </a></span><span class="l"><a href="#187"> 187 </a></span><span class="l"><a href="#188"> 188 </a></span><span class="l"><a href="#189"> 189 </a></span><span class="l"><a href="#190"> 190 </a></span><span class="l"><a href="#191"> 191 </a></span><span class="l"><a href="#192"> 192 </a></span><span class="l"><a href="#193"> 193 </a></span><span class="l"><a href="#194"> 194 </a></span><span class="l"><a href="#195"> 195 </a></span><span class="l"><a href="#196"> 196 </a></span><span class="l"><a href="#197"> 197 </a></span><span class="l"><a href="#198"> 198 </a></span><span class="l"><a href="#199"> 199 </a></span><span class="l"><a href="#200"> 200 </a></span><span class="l"><a href="#201"> 201 </a></span><span class="l"><a href="#202"> 202 </a></span><span class="l"><a href="#203"> 203 </a></span><span class="l"><a href="#204"> 204 </a></span><span class="l"><a href="#205"> 205 </a></span><span class="l"><a href="#206"> 206 </a></span><span class="l"><a href="#207"> 207 </a></span><span class="l"><a href="#208"> 208 </a></span><span class="l"><a href="#209"> 209 </a></span><span class="l"><a href="#210"> 210 </a></span><span class="l"><a href="#211"> 211 </a></span></span><span class="l"><a href="#212"> 212 </a></span></span><span class="l"><a href="#213"> 213 </a></span></span><span class="l"><a href="#214"> 214 </a></span></span><span class="l"><a href="#215"> 215 </a></span></span><span class="l"><a href="#216"> 216 </a></span></span><span class="l"><a href="#217"> 217 </a></span></span><span class="l"><a href="#218"> 218 </a></span></span><span class="l"><a href="#219"> 219 </a></span></span><span class="l"><a href="#220"> 220 </a></span></span><span class="l"><a href="#221"> 221 </a></span></span><span class="l"><a href="#222"> 222 </a></span><span class="l"><a href="#223"> 223 </a></span><span class="l"><a href="#224"> 224 </a></span><span class="l"><a href="#225"> 225 </a></span><span class="l"><a href="#226"> 226 </a></span><span class="l"><a href="#227"> 227 </a></span><span class="l"><a href="#228"> 228 </a></span><span class="l"><a href="#229"> 229 </a></span><span class="l"><a href="#230"> 230 </a></span><span class="l"><a href="#231"> 231 </a></span><span class="l"><a href="#232"> 232 </a></span><span class="l"><a href="#233"> 233 </a></span><span class="l"><a href="#234"> 234 </a></span><span class="l"><a href="#235"> 235 </a></span><span class="l"><a href="#236"> 236 </a></span></span><span class="l"><a href="#237"> 237 </a></span></span><span class="l"><a href="#238"> 238 </a></span></span><span class="l"><a href="#239"> 239 </a></span></span><span class="l"><a href="#240"> 240 </a></span><span class="l"><a href="#241"> 241 </a></span><span class="l"><a href="#242"> 242 </a></span><span class="l"><a href="#243"> 243 </a></span><span class="l"><a href="#244"> 244 </a></span><span class="l"><a href="#245"> 245 </a></span><span class="l"><a href="#246"> 246 </a></span><span class="l"><a href="#247"> 247 </a></span><span class="l"><a href="#248"> 248 </a></span><span class="l"><a href="#249"> 249 </a></span><span class="l"><a href="#250"> 250 </a></span><span class="l"><a href="#251"> 251 </a></span><span class="l"><a href="#252"> 252 </a></span><span class="l"><a href="#253"> 253 </a></span><span class="l"><a href="#254"> 254 </a></span></span><span class="l"><a href="#255"> 255 </a></span></span><span class="l"><a href="#256"> 256 </a></span></span><span class="l"><a href="#257"> 257 </a></span></span><span class="l"><a href="#258"> 258 </a></span><span class="l"><a href="#259"> 259 </a></span><span class="l"><a href="#260"> 260 </a></span><span class="l"><a href="#261"> 261 </a></span><span class="l"><a href="#262"> 262 </a></span><span class="l"><a href="#263"> 263 </a></span><span class="l"><a href="#264"> 264 </a></span><span class="l"><a href="#265"> 265 </a></span><span class="l"><a href="#266"> 266 </a></span><span class="l"><a href="#267"> 267 </a></span><span class="l"><a href="#268"> 268 </a></span><span class="l"><a href="#269"> 269 </a></span><span class="l"><a href="#270"> 270 </a></span><span class="l"><a href="#271"> 271 </a></span><span class="l"><a href="#272"> 272 </a></span><span class="l"><a href="#273"> 273 </a></span><span class="l"><a href="#274"> 274 </a></span><span class="l"><a href="#275"> 275 </a></span><span class="l"><a href="#276"> 276 </a></span><span class="l"><a href="#277"> 277 </a></span><span class="l"><a href="#278"> 278 </a></span></span><span class="l"><a href="#279"> 279 </a></span></span><span class="l"><a href="#280"> 280 </a></span></span><span class="l"><a href="#281"> 281 </a></span></span><span class="l"><a href="#282"> 282 </a></span><span class="l"><a href="#283"> 283 </a></span><span class="l"><a href="#284"> 284 </a></span><span class="l"><a href="#285"> 285 </a></span><span class="l"><a href="#286"> 286 </a></span><span class="l"><a href="#287"> 287 </a></span><span class="l"><a href="#288"> 288 </a></span><span class="l"><a href="#289"> 289 </a></span><span class="l"><a href="#290"> 290 </a></span><span class="l"><a href="#291"> 291 </a></span><span class="l"><a href="#292"> 292 </a></span><span class="l"><a href="#293"> 293 </a></span><span class="l"><a href="#294"> 294 </a></span><span class="l"><a href="#295"> 295 </a></span><span class="l"><a href="#296"> 296 </a></span><span class="l"><a href="#297"> 297 </a></span><span class="l"><a href="#298"> 298 </a></span><span class="l"><a href="#299"> 299 </a></span><span class="l"><a href="#300"> 300 </a></span><span class="l"><a href="#301"> 301 </a></span><span class="l"><a href="#302"> 302 </a></span><span class="l"><a href="#303"> 303 </a></span><span class="l"><a href="#304"> 304 </a></span><span class="l"><a href="#305"> 305 </a></span><span class="l"><a href="#306"> 306 </a></span><span class="l"><a href="#307"> 307 </a></span><span class="l"><a href="#308"> 308 </a></span><span class="l"><a href="#309"> 309 </a></span><span class="l"><a href="#310"> 310 </a></span><span class="l"><a href="#311"> 311 </a></span><span class="l"><a href="#312"> 312 </a></span><span class="l"><a href="#313"> 313 </a></span><span class="l"><a href="#314"> 314 </a></span><span class="l"><a href="#315"> 315 </a></span><span class="l"><a href="#316"> 316 </a></span><span class="l"><a href="#317"> 317 </a></span><span class="l"><a href="#318"> 318 </a></span><span class="l"><a href="#319"> 319 </a></span><span class="l"><a href="#320"> 320 </a></span><span class="l"><a href="#321"> 321 </a></span><span class="l"><a href="#322"> 322 </a></span><span class="l"><a href="#323"> 323 </a></span><span class="l"><a href="#324"> 324 </a></span><span class="l"><a href="#325"> 325 </a></span><span class="l"><a href="#326"> 326 </a></span><span class="l"><a href="#327"> 327 </a></span><span class="l"><a href="#328"> 328 </a></span><span class="l"><a href="#329"> 329 </a></span><span class="l"><a href="#330"> 330 </a></span><span class="l"><a href="#331"> 331 </a></span><span class="l"><a href="#332"> 332 </a></span><span class="l"><a href="#333"> 333 </a></span><span class="l"><a href="#334"> 334 </a></span><span class="l"><a href="#335"> 335 </a></span><span class="l"><a href="#336"> 336 </a></span><span class="l"><a href="#337"> 337 </a></span><span class="l"><a href="#338"> 338 </a></span><span class="l"><a href="#339"> 339 </a></span><span class="l"><a href="#340"> 340 </a></span><span class="l"><a href="#341"> 341 </a></span><span class="l"><a href="#342"> 342 </a></span><span class="l"><a href="#343"> 343 </a></span><span class="l"><a href="#344"> 344 </a></span><span class="l"><a href="#345"> 345 </a></span><span class="l"><a href="#346"> 346 </a></span><span class="l"><a href="#347"> 347 </a></span><span class="l"><a href="#348"> 348 </a></span><span class="l"><a href="#349"> 349 </a></span><span class="l"><a href="#350"> 350 </a></span><span class="l"><a href="#351"> 351 </a></span><span class="l"><a href="#352"> 352 </a></span><span class="l"><a href="#353"> 353 </a></span><span class="l"><a href="#354"> 354 </a></span><span class="l"><a href="#355"> 355 </a></span><span class="l"><a href="#356"> 356 </a></span><span class="l"><a href="#357"> 357 </a></span><span class="l"><a href="#358"> 358 </a></span><span class="l"><a href="#359"> 359 </a></span><span class="l"><a href="#360"> 360 </a></span><span class="l"><a href="#361"> 361 </a></span><span class="l"><a href="#362"> 362 </a></span><span class="l"><a href="#363"> 363 </a></span><span class="l"><a href="#364"> 364 </a></span><span class="l"><a href="#365"> 365 </a></span><span class="l"><a href="#366"> 366 </a></span><span class="l"><a href="#367"> 367 </a></span><span class="l"><a href="#368"> 368 </a></span><span class="l"><a href="#369"> 369 </a></span><span class="l"><a href="#370"> 370 </a></span><span class="l"><a href="#371"> 371 </a></span><span class="l"><a href="#372"> 372 </a></span><span class="l"><a href="#373"> 373 </a></span><span class="l"><a href="#374"> 374 </a></span><span class="l"><a href="#375"> 375 </a></span><span class="l"><a href="#376"> 376 </a></span><span class="l"><a href="#377"> 377 </a></span><span class="l"><a href="#378"> 378 </a></span><span class="l"><a href="#379"> 379 </a></span><span class="l"><a href="#380"> 380 </a></span><span class="l"><a href="#381"> 381 </a></span><span class="l"><a href="#382"> 382 </a></span><span class="l"><a href="#383"> 383 </a></span><span class="l"><a href="#384"> 384 </a></span><span class="l"><a href="#385"> 385 </a></span><span class="l"><a href="#386"> 386 </a></span><span class="l"><a href="#387"> 387 </a></span><span class="l"><a href="#388"> 388 </a></span><span class="l"><a href="#389"> 389 </a></span><span class="l"><a href="#390"> 390 </a></span><span class="l"><a href="#391"> 391 </a></span><span class="l"><a href="#392"> 392 </a></span><span class="l"><a href="#393"> 393 </a></span><span class="l"><a href="#394"> 394 </a></span><span class="l"><a href="#395"> 395 </a></span><span class="l"><a href="#396"> 396 </a></span><span class="l"><a href="#397"> 397 </a></span><span class="l"><a href="#398"> 398 </a></span><span class="l"><a href="#399"> 399 </a></span><span class="l"><a href="#400"> 400 </a></span><span class="l"><a href="#401"> 401 </a></span><span class="l"><a href="#402"> 402 </a></span><span class="l"><a href="#403"> 403 </a></span><span class="l"><a href="#404"> 404 </a></span><span class="l"><a href="#405"> 405 </a></span><span class="l"><a href="#406"> 406 </a></span><span class="l"><a href="#407"> 407 </a></span><span class="l"><a href="#408"> 408 </a></span><span class="l"><a href="#409"> 409 </a></span><span class="l"><a href="#410"> 410 </a></span><span class="l"><a href="#411"> 411 </a></span><span class="l"><a href="#412"> 412 </a></span><span class="l"><a href="#413"> 413 </a></span><span class="l"><a href="#414"> 414 </a></span><span class="l"><a href="#415"> 415 </a></span><span class="l"><a href="#416"> 416 </a></span><span class="l"><a href="#417"> 417 </a></span><span class="l"><a href="#418"> 418 </a></span><span class="l"><a href="#419"> 419 </a></span><span class="l"><a href="#420"> 420 </a></span><span class="l"><a href="#421"> 421 </a></span><span class="l"><a href="#422"> 422 </a></span><span class="l"><a href="#423"> 423 </a></span><span class="l"><a href="#424"> 424 </a></span><span class="l"><a href="#425"> 425 </a></span><span class="l"><a href="#426"> 426 </a></span><span class="l"><a href="#427"> 427 </a></span><span class="l"><a href="#428"> 428 </a></span><span class="l"><a href="#429"> 429 </a></span><span class="l"><a href="#430"> 430 </a></span><span class="l"><a href="#431"> 431 </a></span><span class="l"><a href="#432"> 432 </a></span><span class="l"><a href="#433"> 433 </a></span><span class="l"><a href="#434"> 434 </a></span><span class="l"><a href="#435"> 435 </a></span><span class="l"><a href="#436"> 436 </a></span><span class="l"><a href="#437"> 437 </a></span><span class="l"><a href="#438"> 438 </a></span><span class="l"><a href="#439"> 439 </a></span><span class="l"><a href="#440"> 440 </a></span><span class="l"><a href="#441"> 441 </a></span><span class="l"><a href="#442"> 442 </a></span><span class="l"><a href="#443"> 443 </a></span><span class="l"><a href="#444"> 444 </a></span><span class="l"><a href="#445"> 445 </a></span><span class="l"><a href="#446"> 446 </a></span><span class="l"><a href="#447"> 447 </a></span><span class="l"><a href="#448"> 448 </a></span><span class="l"><a href="#449"> 449 </a></span><span class="l"><a href="#450"> 450 </a></span><span class="l"><a href="#451"> 451 </a></span><span class="l"><a href="#452"> 452 </a></span><span class="l"><a href="#453"> 453 </a></span><span class="l"><a href="#454"> 454 </a></span><span class="l"><a href="#455"> 455 </a></span><span class="l"><a href="#456"> 456 </a></span><span class="l"><a href="#457"> 457 </a></span><span class="l"><a href="#458"> 458 </a></span><span class="l"><a href="#459"> 459 </a></span><span class="l"><a href="#460"> 460 </a></span><span class="l"><a href="#461"> 461 </a></span><span class="l"><a href="#462"> 462 </a></span><span class="l"><a href="#463"> 463 </a></span><span class="l"><a href="#464"> 464 </a></span><span class="l"><a href="#465"> 465 </a></span><span class="l"><a href="#466"> 466 </a></span><span class="l"><a href="#467"> 467 </a></span><span class="l"><a href="#468"> 468 </a></span><span class="l"><a href="#469"> 469 </a></span><span class="l"><a href="#470"> 470 </a></span><span class="l"><a href="#471"> 471 </a></span><span class="l"><a href="#472"> 472 </a></span><span class="l"><a href="#473"> 473 </a></span><span class="l"><a href="#474"> 474 </a></span><span class="l"><a href="#475"> 475 </a></span><span class="l"><a href="#476"> 476 </a></span><span class="l"><a href="#477"> 477 </a></span><span class="l"><a href="#478"> 478 </a></span><span class="l"><a href="#479"> 479 </a></span><span class="l"><a href="#480"> 480 </a></span><span class="l"><a href="#481"> 481 </a></span><span class="l"><a href="#482"> 482 </a></span><span class="l"><a href="#483"> 483 </a></span><span class="l"><a href="#484"> 484 </a></span><span class="l"><a href="#485"> 485 </a></span><span class="l"><a href="#486"> 486 </a></span><span class="l"><a href="#487"> 487 </a></span><span class="l"><a href="#488"> 488 </a></span><span class="l"><a href="#489"> 489 </a></span><span class="l"><a href="#490"> 490 </a></span><span class="l"><a href="#491"> 491 </a></span><span class="l"><a href="#492"> 492 </a></span><span class="l"><a href="#493"> 493 </a></span><span class="l"><a href="#494"> 494 </a></span><span class="l"><a href="#495"> 495 </a></span><span class="l"><a href="#496"> 496 </a></span><span class="l"><a href="#497"> 497 </a></span><span class="l"><a href="#498"> 498 </a></span><span class="l"><a href="#499"> 499 </a></span><span class="l"><a href="#500"> 500 </a></span><span class="l"><a href="#501"> 501 </a></span><span class="l"><a href="#502"> 502 </a></span><span class="l"><a href="#503"> 503 </a></span><span class="l"><a href="#504"> 504 </a></span><span class="l"><a href="#505"> 505 </a></span><span class="l"><a href="#506"> 506 </a></span><span class="l"><a href="#507"> 507 </a></span><span class="l"><a href="#508"> 508 </a></span><span class="l"><a href="#509"> 509 </a></span><span class="l"><a href="#510"> 510 </a></span><span class="l"><a href="#511"> 511 </a></span><span class="l"><a href="#512"> 512 </a></span><span class="l"><a href="#513"> 513 </a></span><span class="l"><a href="#514"> 514 </a></span><span class="l"><a href="#515"> 515 </a></span><span class="l"><a href="#516"> 516 </a></span><span class="l"><a href="#517"> 517 </a></span><span class="l"><a href="#518"> 518 </a></span><span class="l"><a href="#519"> 519 </a></span><span class="l"><a href="#520"> 520 </a></span><span class="l"><a href="#521"> 521 </a></span><span class="l"><a href="#522"> 522 </a></span><span class="l"><a href="#523"> 523 </a></span><span class="l"><a href="#524"> 524 </a></span><span class="l"><a href="#525"> 525 </a></span><span class="l"><a href="#526"> 526 </a></span><span class="l"><a href="#527"> 527 </a></span><span class="l"><a href="#528"> 528 </a></span><span class="l"><a href="#529"> 529 </a></span><span class="l"><a href="#530"> 530 </a></span><span class="l"><a href="#531"> 531 </a></span><span class="l"><a href="#532"> 532 </a></span><span class="l"><a href="#533"> 533 </a></span><span class="l"><a href="#534"> 534 </a></span><span class="l"><a href="#535"> 535 </a></span><span class="l"><a href="#536"> 536 </a></span><span class="l"><a href="#537"> 537 </a></span><span class="l"><a href="#538"> 538 </a></span><span class="l"><a href="#539"> 539 </a></span><span class="l"><a href="#540"> 540 </a></span><span class="l"><a href="#541"> 541 </a></span><span class="l"><a href="#542"> 542 </a></span><span class="l"><a href="#543"> 543 </a></span><span class="l"><a href="#544"> 544 </a></span><span class="l"><a href="#545"> 545 </a></span><span class="l"><a href="#546"> 546 </a></span><span class="l"><a href="#547"> 547 </a></span><span class="l"><a href="#548"> 548 </a></span><span class="l"><a href="#549"> 549 </a></span><span class="l"><a href="#550"> 550 </a></span><span class="l"><a href="#551"> 551 </a></span><span class="l"><a href="#552"> 552 </a></span><span class="l"><a href="#553"> 553 </a></span><span class="l"><a href="#554"> 554 </a></span><span class="l"><a href="#555"> 555 </a></span><span class="l"><a href="#556"> 556 </a></span><span class="l"><a href="#557"> 557 </a></span><span class="l"><a href="#558"> 558 </a></span><span class="l"><a href="#559"> 559 </a></span><span class="l"><a href="#560"> 560 </a></span><span class="l"><a href="#561"> 561 </a></span><span class="l"><a href="#562"> 562 </a></span><span class="l"><a href="#563"> 563 </a></span><span class="l"><a href="#564"> 564 </a></span><span class="l"><a href="#565"> 565 </a></span><span class="l"><a href="#566"> 566 </a></span><span class="l"><a href="#567"> 567 </a></span><span class="l"><a href="#568"> 568 </a></span><span class="l"><a href="#569"> 569 </a></span><span class="l"><a href="#570"> 570 </a></span><span class="l"><a href="#571"> 571 </a></span><span class="l"><a href="#572"> 572 </a></span><span class="l"><a href="#573"> 573 </a></span><span class="l"><a href="#574"> 574 </a></span><span class="l"><a href="#575"> 575 </a></span><span class="l"><a href="#576"> 576 </a></span><span class="l"><a href="#577"> 577 </a></span><span class="l"><a href="#578"> 578 </a></span><span class="l"><a href="#579"> 579 </a></span><span class="l"><a href="#580"> 580 </a></span><span class="l"><a href="#581"> 581 </a></span><span class="l"><a href="#582"> 582 </a></span><span class="l"><a href="#583"> 583 </a></span><span class="l"><a href="#584"> 584 </a></span><span class="l"><a href="#585"> 585 </a></span><span class="l"><a href="#586"> 586 </a></span><span class="l"><a href="#587"> 587 </a></span><span class="l"><a href="#588"> 588 </a></span><span class="l"><a href="#589"> 589 </a></span><span class="l"><a href="#590"> 590 </a></span><span class="l"><a href="#591"> 591 </a></span><span class="l"><a href="#592"> 592 </a></span><span class="l"><a href="#593"> 593 </a></span><span class="l"><a href="#594"> 594 </a></span><span class="l"><a href="#595"> 595 </a></span><span class="l"><a href="#596"> 596 </a></span><span class="l"><a href="#597"> 597 </a></span><span class="l"><a href="#598"> 598 </a></span><span class="l"><a href="#599"> 599 </a></span><span class="l"><a href="#600"> 600 </a></span><span class="l"><a href="#601"> 601 </a></span><span class="l"><a href="#602"> 602 </a></span><span class="l"><a href="#603"> 603 </a></span><span class="l"><a href="#604"> 604 </a></span><span class="l"><a href="#605"> 605 </a></span><span class="l"><a href="#606"> 606 </a></span><span class="l"><a href="#607"> 607 </a></span><span class="l"><a href="#608"> 608 </a></span><span class="l"><a href="#609"> 609 </a></span><span class="l"><a href="#610"> 610 </a></span><span class="l"><a href="#611"> 611 </a></span><span class="l"><a href="#612"> 612 </a></span><span class="l"><a href="#613"> 613 </a></span><span class="l"><a href="#614"> 614 </a></span><span class="l"><a href="#615"> 615 </a></span><span class="l"><a href="#616"> 616 </a></span><span class="l"><a href="#617"> 617 </a></span><span class="l"><a href="#618"> 618 </a></span><span class="l"><a href="#619"> 619 </a></span><span class="l"><a href="#620"> 620 </a></span><span class="l"><a href="#621"> 621 </a></span><span class="l"><a href="#622"> 622 </a></span><span class="l"><a href="#623"> 623 </a></span><span class="l"><a href="#624"> 624 </a></span><span class="l"><a href="#625"> 625 </a></span><span class="l"><a href="#626"> 626 </a></span><span class="l"><a href="#627"> 627 </a></span><span class="l"><a href="#628"> 628 </a></span><span class="l"><a href="#629"> 629 </a></span><span class="l"><a href="#630"> 630 </a></span><span class="l"><a href="#631"> 631 </a></span><span class="l"><a href="#632"> 632 </a></span></span><span class="l"><a href="#633"> 633 </a></span></span><span class="l"><a href="#634"> 634 </a></span></span><span class="l"><a href="#635"> 635 </a></span></span><span class="l"><a href="#636"> 636 </a></span></span><span class="l"><a href="#637"> 637 </a></span></span><span class="l"><a href="#638"> 638 </a></span></span><span class="l"><a href="#639"> 639 </a></span><span class="l"><a href="#640"> 640 </a></span><span class="l"><a href="#641"> 641 </a></span><span class="l"><a href="#642"> 642 </a></span><span class="l"><a href="#643"> 643 </a></span><span class="l"><a href="#644"> 644 </a></span><span class="l"><a href="#645"> 645 </a></span><span class="l"><a href="#646"> 646 </a></span><span class="l"><a href="#647"> 647 </a></span><span class="l"><a href="#648"> 648 </a></span><span class="l"><a href="#649"> 649 </a></span><span class="l"><a href="#650"> 650 </a></span><span class="l"><a href="#651"> 651 </a></span><span class="l"><a href="#652"> 652 </a></span><span class="l"><a href="#653"> 653 </a></span><span class="l"><a href="#654"> 654 </a></span><span class="l"><a href="#655"> 655 </a></span><span class="l"><a href="#656"> 656 </a></span><span class="l"><a href="#657"> 657 </a></span><span class="l"><a href="#658"> 658 </a></span><span class="l"><a href="#659"> 659 </a></span><span class="l"><a href="#660"> 660 </a></span><span class="l"><a href="#661"> 661 </a></span><span class="l"><a href="#662"> 662 </a></span><span class="l"><a href="#663"> 663 </a></span><span class="l"><a href="#664"> 664 </a></span><span class="l"><a href="#665"> 665 </a></span><span class="l"><a href="#666"> 666 </a></span><span class="l"><a href="#667"> 667 </a></span><span class="l"><a href="#668"> 668 </a></span><span class="l"><a href="#669"> 669 </a></span><span class="l"><a href="#670"> 670 </a></span><span class="l"><a href="#671"> 671 </a></span><span class="l"><a href="#672"> 672 </a></span><span class="l"><a href="#673"> 673 </a></span><span class="l"><a href="#674"> 674 </a></span><span class="l"><a href="#675"> 675 </a></span></span><span class="l"><a href="#676"> 676 </a></span></span><span class="l"><a href="#677"> 677 </a></span></span><span class="l"><a href="#678"> 678 </a></span></span><span class="l"><a href="#679"> 679 </a></span></span><span class="l"><a href="#680"> 680 </a></span></span><span class="l"><a href="#681"> 681 </a></span></span><span class="l"><a href="#682"> 682 </a></span></span><span class="l"><a href="#683"> 683 </a></span></span><span class="l"><a href="#684"> 684 </a></span></span><span class="l"><a href="#685"> 685 </a></span></span><span class="l"><a href="#686"> 686 </a></span></span><span class="l"><a href="#687"> 687 </a></span></span><span class="l"><a href="#688"> 688 </a></span></span><span class="l"><a href="#689"> 689 </a></span></span><span class="l"><a href="#690"> 690 </a></span></span><span class="l"><a href="#691"> 691 </a></span></span><span class="l"><a href="#692"> 692 </a></span></span><span class="l"><a href="#693"> 693 </a></span></span><span class="l"><a href="#694"> 694 </a></span></span><span class="l"><a href="#695"> 695 </a></span></span><span class="l"><a href="#696"> 696 </a></span></span><span class="l"><a href="#697"> 697 </a></span></span><span class="l"><a href="#698"> 698 </a></span></span><span class="l"><a href="#699"> 699 </a></span><span class="l"><a href="#700"> 700 </a></span><span class="l"><a href="#701"> 701 </a></span><span class="l"><a href="#702"> 702 </a></span><span class="l"><a href="#703"> 703 </a></span><span class="l"><a href="#704"> 704 </a></span><span class="l"><a href="#705"> 705 </a></span><span class="l"><a href="#706"> 706 </a></span><span class="l"><a href="#707"> 707 </a></span><span class="l"><a href="#708"> 708 </a></span><span class="l"><a href="#709"> 709 </a></span><span class="l"><a href="#710"> 710 </a></span><span class="l"><a href="#711"> 711 </a></span><span class="l"><a href="#712"> 712 </a></span><span class="l"><a href="#713"> 713 </a></span><span class="l"><a href="#714"> 714 </a></span><span class="l"><a href="#715"> 715 </a></span><span class="l"><a href="#716"> 716 </a></span><span class="l"><a href="#717"> 717 </a></span><span class="l"><a href="#718"> 718 </a></span><span class="l"><a href="#719"> 719 </a></span><span class="l"><a href="#720"> 720 </a></span><span class="l"><a href="#721"> 721 </a></span><span class="l"><a href="#722"> 722 </a></span><span class="l"><a href="#723"> 723 </a></span><span class="l"><a href="#724"> 724 </a></span><span class="l"><a href="#725"> 725 </a></span><span class="l"><a href="#726"> 726 </a></span><span class="l"><a href="#727"> 727 </a></span><span class="l"><a href="#728"> 728 </a></span><span class="l"><a href="#729"> 729 </a></span><span class="l"><a href="#730"> 730 </a></span><span class="l"><a href="#731"> 731 </a></span><span class="l"><a href="#732"> 732 </a></span><span class="l"><a href="#733"> 733 </a></span><span class="l"><a href="#734"> 734 </a></span><span class="l"><a href="#735"> 735 </a></span><span class="l"><a href="#736"> 736 </a></span><span class="l"><a href="#737"> 737 </a></span><span class="l"><a href="#738"> 738 </a></span><span class="l"><a href="#739"> 739 </a></span><span class="l"><a href="#740"> 740 </a></span><span class="l"><a href="#741"> 741 </a></span><span class="l"><a href="#742"> 742 </a></span><span class="l"><a href="#743"> 743 </a></span><span class="l"><a href="#744"> 744 </a></span><span class="l"><a href="#745"> 745 </a></span><span class="l"><a href="#746"> 746 </a></span><span class="l"><a href="#747"> 747 </a></span><span class="l"><a href="#748"> 748 </a></span><span class="l"><a href="#749"> 749 </a></span><span class="l"><a href="#750"> 750 </a></span><span class="l"><a href="#751"> 751 </a></span><span class="l"><a href="#752"> 752 </a></span><span class="l"><a href="#753"> 753 </a></span><span class="l"><a href="#754"> 754 </a></span><span class="l"><a href="#755"> 755 </a></span><span class="l"><a href="#756"> 756 </a></span><span class="l"><a href="#757"> 757 </a></span><span class="l"><a href="#758"> 758 </a></span><span class="l"><a href="#759"> 759 </a></span><span class="l"><a href="#760"> 760 </a></span><span class="l"><a href="#761"> 761 </a></span><span class="l"><a href="#762"> 762 </a></span><span class="l"><a href="#763"> 763 </a></span><span class="l"><a href="#764"> 764 </a></span><span class="l"><a href="#765"> 765 </a></span><span class="l"><a href="#766"> 766 </a></span><span class="l"><a href="#767"> 767 </a></span><span class="l"><a href="#768"> 768 </a></span><span class="l"><a href="#769"> 769 </a></span><span class="l"><a href="#770"> 770 </a></span><span class="l"><a href="#771"> 771 </a></span><span class="l"><a href="#772"> 772 </a></span><span class="l"><a href="#773"> 773 </a></span><span class="l"><a href="#774"> 774 </a></span><span class="l"><a href="#775"> 775 </a></span><span class="l"><a href="#776"> 776 </a></span><span class="l"><a href="#777"> 777 </a></span><span class="l"><a href="#778"> 778 </a></span><span class="l"><a href="#779"> 779 </a></span><span class="l"><a href="#780"> 780 </a></span><span class="l"><a href="#781"> 781 </a></span><span class="l"><a href="#782"> 782 </a></span><span class="l"><a href="#783"> 783 </a></span><span class="l"><a href="#784"> 784 </a></span><span class="l"><a href="#785"> 785 </a></span><span class="l"><a href="#786"> 786 </a></span><span class="l"><a href="#787"> 787 </a></span><span class="l"><a href="#788"> 788 </a></span><span class="l"><a href="#789"> 789 </a></span><span class="l"><a href="#790"> 790 </a></span><span class="l"><a href="#791"> 791 </a></span><span class="l"><a href="#792"> 792 </a></span><span class="l"><a href="#793"> 793 </a></span><span class="l"><a href="#794"> 794 </a></span><span class="l"><a href="#795"> 795 </a></span><span class="l"><a href="#796"> 796 </a></span><span class="l"><a href="#797"> 797 </a></span><span class="l"><a href="#798"> 798 </a></span><span class="l"><a href="#799"> 799 </a></span><span class="l"><a href="#800"> 800 </a></span><span class="l"><a href="#801"> 801 </a></span><span class="l"><a href="#802"> 802 </a></span><span class="l"><a href="#803"> 803 </a></span><span class="l"><a href="#804"> 804 </a></span><span class="l"><a href="#805"> 805 </a></span><span class="l"><a href="#806"> 806 </a></span><span class="l"><a href="#807"> 807 </a></span><span class="l"><a href="#808"> 808 </a></span><span class="l"><a href="#809"> 809 </a></span><span class="l"><a href="#810"> 810 </a></span><span class="l"><a href="#811"> 811 </a></span><span class="l"><a href="#812"> 812 </a></span><span class="l"><a href="#813"> 813 </a></span><span class="l"><a href="#814"> 814 </a></span><span class="l"><a href="#815"> 815 </a></span><span class="l"><a href="#816"> 816 </a></span><span class="l"><a href="#817"> 817 </a></span><span class="l"><a href="#818"> 818 </a></span><span class="l"><a href="#819"> 819 </a></span><span class="l"><a href="#820"> 820 </a></span><span class="l"><a href="#821"> 821 </a></span><span class="l"><a href="#822"> 822 </a></span><span class="l"><a href="#823"> 823 </a></span><span class="l"><a href="#824"> 824 </a></span><span class="l"><a href="#825"> 825 </a></span><span class="l"><a href="#826"> 826 </a></span><span class="l"><a href="#827"> 827 </a></span><span class="l"><a href="#828"> 828 </a></span><span class="l"><a href="#829"> 829 </a></span><span class="l"><a href="#830"> 830 </a></span><span class="l"><a href="#831"> 831 </a></span><span class="l"><a href="#832"> 832 </a></span><span class="l"><a href="#833"> 833 </a></span><span class="l"><a href="#834"> 834 </a></span><span class="l"><a href="#835"> 835 </a></span><span class="l"><a href="#836"> 836 </a></span><span class="l"><a href="#837"> 837 </a></span><span class="l"><a href="#838"> 838 </a></span><span class="l"><a href="#839"> 839 </a></span><span class="l"><a href="#840"> 840 </a></span><span class="l"><a href="#841"> 841 </a></span><span class="l"><a href="#842"> 842 </a></span><span class="l"><a href="#843"> 843 </a></span><span class="l"><a href="#844"> 844 </a></span><span class="l"><a href="#845"> 845 </a></span><span class="l"><a href="#846"> 846 </a></span><span class="l"><a href="#847"> 847 </a></span><span class="l"><a href="#848"> 848 </a></span><span class="l"><a href="#849"> 849 </a></span><span class="l"><a href="#850"> 850 </a></span><span class="l"><a href="#851"> 851 </a></span><span class="l"><a href="#852"> 852 </a></span><span class="l"><a href="#853"> 853 </a></span><span class="l"><a href="#854"> 854 </a></span><span class="l"><a href="#855"> 855 </a></span><span class="l"><a href="#856"> 856 </a></span><span class="l"><a href="#857"> 857 </a></span><span class="l"><a href="#858"> 858 </a></span><span class="l"><a href="#859"> 859 </a></span><span class="l"><a href="#860"> 860 </a></span><span class="l"><a href="#861"> 861 </a></span><span class="l"><a href="#862"> 862 </a></span><span class="l"><a href="#863"> 863 </a></span><span class="l"><a href="#864"> 864 </a></span><span class="l"><a href="#865"> 865 </a></span><span class="l"><a href="#866"> 866 </a></span><span class="l"><a href="#867"> 867 </a></span><span class="l"><a href="#868"> 868 </a></span><span class="l"><a href="#869"> 869 </a></span><span class="l"><a href="#870"> 870 </a></span><span class="l"><a href="#871"> 871 </a></span><span class="l"><a href="#872"> 872 </a></span><span class="l"><a href="#873"> 873 </a></span><span class="l"><a href="#874"> 874 </a></span><span class="l"><a href="#875"> 875 </a></span><span class="l"><a href="#876"> 876 </a></span><span class="l"><a href="#877"> 877 </a></span><span class="l"><a href="#878"> 878 </a></span><span class="l"><a href="#879"> 879 </a></span><span class="l"><a href="#880"> 880 </a></span><span class="l"><a href="#881"> 881 </a></span><span class="l"><a href="#882"> 882 </a></span><span class="l"><a href="#883"> 883 </a></span><span class="l"><a href="#884"> 884 </a></span><span class="l"><a href="#885"> 885 </a></span><span class="l"><a href="#886"> 886 </a></span><span class="l"><a href="#887"> 887 </a></span><span class="l"><a href="#888"> 888 </a></span><span class="l"><a href="#889"> 889 </a></span><span class="l"><a href="#890"> 890 </a></span><span class="l"><a href="#891"> 891 </a></span><span class="l"><a href="#892"> 892 </a></span><span class="l"><a href="#893"> 893 </a></span><span class="l"><a href="#894"> 894 </a></span><span class="l"><a href="#895"> 895 </a></span><span class="l"><a href="#896"> 896 </a></span><span class="l"><a href="#897"> 897 </a></span><span class="l"><a href="#898"> 898 </a></span><span class="l"><a href="#899"> 899 </a></span><span class="l"><a href="#900"> 900 </a></span><span class="l"><a href="#901"> 901 </a></span><span class="l"><a href="#902"> 902 </a></span><span class="l"><a href="#903"> 903 </a></span><span class="l"><a href="#904"> 904 </a></span><span class="l"><a href="#905"> 905 </a></span><span class="l"><a href="#906"> 906 </a></span><span class="l"><a href="#907"> 907 </a></span><span class="l"><a href="#908"> 908 </a></span><span class="l"><a href="#909"> 909 </a></span><span class="l"><a href="#910"> 910 </a></span><span class="l"><a href="#911"> 911 </a></span><span class="l"><a href="#912"> 912 </a></span><span class="l"><a href="#913"> 913 </a></span><span class="l"><a href="#914"> 914 </a></span><span class="l"><a href="#915"> 915 </a></span><span class="l"><a href="#916"> 916 </a></span><span class="l"><a href="#917"> 917 </a></span><span class="l"><a href="#918"> 918 </a></span><span class="l"><a href="#919"> 919 </a></span><span class="l"><a href="#920"> 920 </a></span><span class="l"><a href="#921"> 921 </a></span><span class="l"><a href="#922"> 922 </a></span><span class="l"><a href="#923"> 923 </a></span><span class="l"><a href="#924"> 924 </a></span><span class="l"><a href="#925"> 925 </a></span><span class="l"><a href="#926"> 926 </a></span><span class="l"><a href="#927"> 927 </a></span><span class="l"><a href="#928"> 928 </a></span><span class="l"><a href="#929"> 929 </a></span><span class="l"><a href="#930"> 930 </a></span><span class="l"><a href="#931"> 931 </a></span><span class="l"><a href="#932"> 932 </a></span><span class="l"><a href="#933"> 933 </a></span></span><span class="l"><a href="#934"> 934 </a></span></span><span class="l"><a href="#935"> 935 </a></span></span><span class="l"><a href="#936"> 936 </a></span></span><span class="l"><a href="#937"> 937 </a></span><span class="l"><a href="#938"> 938 </a></span><span class="l"><a href="#939"> 939 </a></span><span class="l"><a href="#940"> 940 </a></span><span class="l"><a href="#941"> 941 </a></span><span class="l"><a href="#942"> 942 </a></span><span class="l"><a href="#943"> 943 </a></span><span class="l"><a href="#944"> 944 </a></span><span class="l"><a href="#945"> 945 </a></span><span class="l"><a href="#946"> 946 </a></span><span class="l"><a href="#947"> 947 </a></span><span class="l"><a href="#948"> 948 </a></span><span class="l"><a href="#949"> 949 </a></span><span class="l"><a href="#950"> 950 </a></span><span class="l"><a href="#951"> 951 </a></span></span><span class="l"><a href="#952"> 952 </a></span></span><span class="l"><a href="#953"> 953 </a></span></span><span class="l"><a href="#954"> 954 </a></span></span><span class="l"><a href="#955"> 955 </a></span><span class="l"><a href="#956"> 956 </a></span><span class="l"><a href="#957"> 957 </a></span><span class="l"><a href="#958"> 958 </a></span><span class="l"><a href="#959"> 959 </a></span><span class="l"><a href="#960"> 960 </a></span><span class="l"><a href="#961"> 961 </a></span><span class="l"><a href="#962"> 962 </a></span><span class="l"><a href="#963"> 963 </a></span><span class="l"><a href="#964"> 964 </a></span><span class="l"><a href="#965"> 965 </a></span><span class="l"><a href="#966"> 966 </a></span><span class="l"><a href="#967"> 967 </a></span><span class="l"><a href="#968"> 968 </a></span><span class="l"><a href="#969"> 969 </a></span><span class="l"><a href="#970"> 970 </a></span><span class="l"><a href="#971"> 971 </a></span><span class="l"><a href="#972"> 972 </a></span><span class="l"><a href="#973"> 973 </a></span><span class="l"><a href="#974"> 974 </a></span><span class="l"><a href="#975"> 975 </a></span><span class="l"><a href="#976"> 976 </a></span><span class="l"><a href="#977"> 977 </a></span><span class="l"><a href="#978"> 978 </a></span></span><span class="l"><a href="#979"> 979 </a></span></span><span class="l"><a href="#980"> 980 </a></span></span><span class="l"><a href="#981"> 981 </a></span></span><span class="l"><a href="#982"> 982 </a></span><span class="l"><a href="#983"> 983 </a></span><span class="l"><a href="#984"> 984 </a></span><span class="l"><a href="#985"> 985 </a></span><span class="l"><a href="#986"> 986 </a></span><span class="l"><a href="#987"> 987 </a></span><span class="l"><a href="#988"> 988 </a></span><span class="l"><a href="#989"> 989 </a></span><span class="l"><a href="#990"> 990 </a></span><span class="l"><a href="#991"> 991 </a></span><span class="l"><a href="#992"> 992 </a></span><span class="l"><a href="#993"> 993 </a></span><span class="l"><a href="#994"> 994 </a></span><span class="l"><a href="#995"> 995 </a></span><span class="l"><a href="#996"> 996 </a></span><span class="l"><a href="#997"> 997 </a></span><span class="l"><a href="#998"> 998 </a></span><span class="l"><a href="#999"> 999 </a></span><span class="l"><a href="#1000">1000 </a></span><span class="l"><a href="#1001">1001 </a></span><span class="l"><a href="#1002">1002 </a></span><span class="l"><a href="#1003">1003 </a></span><span class="l"><a href="#1004">1004 </a></span><span class="l"><a href="#1005">1005 </a></span><span class="l"><a href="#1006">1006 </a></span><span class="l"><a href="#1007">1007 </a></span><span class="l"><a href="#1008">1008 </a></span><span class="l"><a href="#1009">1009 </a></span><span class="l"><a href="#1010">1010 </a></span><span class="l"><a href="#1011">1011 </a></span><span class="l"><a href="#1012">1012 </a></span><span class="l"><a href="#1013">1013 </a></span><span class="l"><a href="#1014">1014 </a></span><span class="l"><a href="#1015">1015 </a></span><span class="l"><a href="#1016">1016 </a></span><span class="l"><a href="#1017">1017 </a></span><span class="l"><a href="#1018">1018 </a></span><span class="l"><a href="#1019">1019 </a></span><span class="l"><a href="#1020">1020 </a></span><span class="l"><a href="#1021">1021 </a></span><span class="l"><a href="#1022">1022 </a></span><span class="l"><a href="#1023">1023 </a></span><span class="l"><a href="#1024">1024 </a></span><span class="l"><a href="#1025">1025 </a></span><span class="l"><a href="#1026">1026 </a></span><span class="l"><a href="#1027">1027 </a></span><span class="l"><a href="#1028">1028 </a></span><span class="l"><a href="#1029">1029 </a></span><span class="l"><a href="#1030">1030 </a></span><span class="l"><a href="#1031">1031 </a></span><span class="l"><a href="#1032">1032 </a></span><span class="l"><a href="#1033">1033 </a></span><span class="l"><a href="#1034">1034 </a></span><span class="l"><a href="#1035">1035 </a></span><span class="l"><a href="#1036">1036 </a></span><span class="l"><a href="#1037">1037 </a></span><span class="l"><a href="#1038">1038 </a></span><span class="l"><a href="#1039">1039 </a></span><span class="l"><a href="#1040">1040 </a></span><span class="l"><a href="#1041">1041 </a></span><span class="l"><a href="#1042">1042 </a></span><span class="l"><a href="#1043">1043 </a></span><span class="l"><a href="#1044">1044 </a></span><span class="l"><a href="#1045">1045 </a></span><span class="l"><a href="#1046">1046 </a></span><span class="l"><a href="#1047">1047 </a></span><span class="l"><a href="#1048">1048 </a></span><span class="l"><a href="#1049">1049 </a></span><span class="l"><a href="#1050">1050 </a></span><span class="l"><a href="#1051">1051 </a></span><span class="l"><a href="#1052">1052 </a></span><span class="l"><a href="#1053">1053 </a></span><span class="l"><a href="#1054">1054 </a></span><span class="l"><a href="#1055">1055 </a></span><span class="l"><a href="#1056">1056 </a></span><span class="l"><a href="#1057">1057 </a></span><span class="l"><a href="#1058">1058 </a></span><span class="l"><a href="#1059">1059 </a></span><span class="l"><a href="#1060">1060 </a></span><span class="l"><a href="#1061">1061 </a></span><span class="l"><a href="#1062">1062 </a></span><span class="l"><a href="#1063">1063 </a></span><span class="l"><a href="#1064">1064 </a></span><span class="l"><a href="#1065">1065 </a></span><span class="l"><a href="#1066">1066 </a></span><span class="l"><a href="#1067">1067 </a></span><span class="l"><a href="#1068">1068 </a></span><span class="l"><a href="#1069">1069 </a></span><span class="l"><a href="#1070">1070 </a></span><span class="l"><a href="#1071">1071 </a></span><span class="l"><a href="#1072">1072 </a></span><span class="l"><a href="#1073">1073 </a></span><span class="l"><a href="#1074">1074 </a></span><span class="l"><a href="#1075">1075 </a></span><span class="l"><a href="#1076">1076 </a></span><span class="l"><a href="#1077">1077 </a></span><span class="l"><a href="#1078">1078 </a></span><span class="l"><a href="#1079">1079 </a></span><span class="l"><a href="#1080">1080 </a></span><span class="l"><a href="#1081">1081 </a></span><span class="l"><a href="#1082">1082 </a></span><span class="l"><a href="#1083">1083 </a></span><span class="l"><a href="#1084">1084 </a></span><span class="l"><a href="#1085">1085 </a></span><span class="l"><a href="#1086">1086 </a></span><span class="l"><a href="#1087">1087 </a></span><span class="l"><a href="#1088">1088 </a></span><span class="l"><a href="#1089">1089 </a></span><span class="l"><a href="#1090">1090 </a></span><span class="l"><a href="#1091">1091 </a></span><span class="l"><a href="#1092">1092 </a></span><span class="l"><a href="#1093">1093 </a></span><span class="l"><a href="#1094">1094 </a></span><span class="l"><a href="#1095">1095 </a></span><span class="l"><a href="#1096">1096 </a></span><span class="l"><a href="#1097">1097 </a></span><span class="l"><a href="#1098">1098 </a></span><span class="l"><a href="#1099">1099 </a></span><span class="l"><a href="#1100">1100 </a></span><span class="l"><a href="#1101">1101 </a></span><span class="l"><a href="#1102">1102 </a></span><span class="l"><a href="#1103">1103 </a></span><span class="l"><a href="#1104">1104 </a></span><span class="l"><a href="#1105">1105 </a></span><span class="l"><a href="#1106">1106 </a></span><span class="l"><a href="#1107">1107 </a></span><span class="l"><a href="#1108">1108 </a></span><span class="l"><a href="#1109">1109 </a></span><span class="l"><a href="#1110">1110 </a></span><span class="l"><a href="#1111">1111 </a></span><span class="l"><a href="#1112">1112 </a></span><span class="l"><a href="#1113">1113 </a></span><span class="l"><a href="#1114">1114 </a></span><span class="l"><a href="#1115">1115 </a></span><span class="l"><a href="#1116">1116 </a></span><span class="l"><a href="#1117">1117 </a></span><span class="l"><a href="#1118">1118 </a></span><span class="l"><a href="#1119">1119 </a></span><span class="l"><a href="#1120">1120 </a></span><span class="l"><a href="#1121">1121 </a></span><span class="l"><a href="#1122">1122 </a></span><span class="l"><a href="#1123">1123 </a></span><span class="l"><a href="#1124">1124 </a></span><span class="l"><a href="#1125">1125 </a></span><span class="l"><a href="#1126">1126 </a></span><span class="l"><a href="#1127">1127 </a></span><span class="l"><a href="#1128">1128 </a></span><span class="l"><a href="#1129">1129 </a></span><span class="l"><a href="#1130">1130 </a></span><span class="l"><a href="#1131">1131 </a></span><span class="l"><a href="#1132">1132 </a></span><span class="l"><a href="#1133">1133 </a></span><span class="l"><a href="#1134">1134 </a></span><span class="l"><a href="#1135">1135 </a></span><span class="l"><a href="#1136">1136 </a></span><span class="l"><a href="#1137">1137 </a></span><span class="l"><a href="#1138">1138 </a></span><span class="l"><a href="#1139">1139 </a></span><span class="l"><a href="#1140">1140 </a></span><span class="l"><a href="#1141">1141 </a></span><span class="l"><a href="#1142">1142 </a></span><span class="l"><a href="#1143">1143 </a></span><span class="l"><a href="#1144">1144 </a></span><span class="l"><a href="#1145">1145 </a></span><span class="l"><a href="#1146">1146 </a></span><span class="l"><a href="#1147">1147 </a></span><span class="l"><a href="#1148">1148 </a></span><span class="l"><a href="#1149">1149 </a></span><span class="l"><a href="#1150">1150 </a></span><span class="l"><a href="#1151">1151 </a></span><span class="l"><a href="#1152">1152 </a></span><span class="l"><a href="#1153">1153 </a></span><span class="l"><a href="#1154">1154 </a></span><span class="l"><a href="#1155">1155 </a></span><span class="l"><a href="#1156">1156 </a></span><span class="l"><a href="#1157">1157 </a></span><span class="l"><a href="#1158">1158 </a></span><span class="l"><a href="#1159">1159 </a></span><span class="l"><a href="#1160">1160 </a></span><span class="l"><a href="#1161">1161 </a></span><span class="l"><a href="#1162">1162 </a></span><span class="l"><a href="#1163">1163 </a></span><span class="l"><a href="#1164">1164 </a></span><span class="l"><a href="#1165">1165 </a></span><span class="l"><a href="#1166">1166 </a></span><span class="l"><a href="#1167">1167 </a></span><span class="l"><a href="#1168">1168 </a></span><span class="l"><a href="#1169">1169 </a></span><span class="l"><a href="#1170">1170 </a></span><span class="l"><a href="#1171">1171 </a></span><span class="l"><a href="#1172">1172 </a></span><span class="l"><a href="#1173">1173 </a></span><span class="l"><a href="#1174">1174 </a></span><span class="l"><a href="#1175">1175 </a></span><span class="l"><a href="#1176">1176 </a></span><span class="l"><a href="#1177">1177 </a></span><span class="l"><a href="#1178">1178 </a></span><span class="l"><a href="#1179">1179 </a></span><span class="l"><a href="#1180">1180 </a></span><span class="l"><a href="#1181">1181 </a></span><span class="l"><a href="#1182">1182 </a></span><span class="l"><a href="#1183">1183 </a></span><span class="l"><a href="#1184">1184 </a></span><span class="l"><a href="#1185">1185 </a></span><span class="l"><a href="#1186">1186 </a></span><span class="l"><a href="#1187">1187 </a></span><span class="l"><a href="#1188">1188 </a></span><span class="l"><a href="#1189">1189 </a></span><span class="l"><a href="#1190">1190 </a></span><span class="l"><a href="#1191">1191 </a></span><span class="l"><a href="#1192">1192 </a></span><span class="l"><a href="#1193">1193 </a></span><span class="l"><a href="#1194">1194 </a></span><span class="l"><a href="#1195">1195 </a></span><span class="l"><a href="#1196">1196 </a></span><span class="l"><a href="#1197">1197 </a></span><span class="l"><a href="#1198">1198 </a></span><span class="l"><a href="#1199">1199 </a></span><span class="l"><a href="#1200">1200 </a></span><span class="l"><a href="#1201">1201 </a></span><span class="l"><a href="#1202">1202 </a></span><span class="l"><a href="#1203">1203 </a></span><span class="l"><a href="#1204">1204 </a></span><span class="l"><a href="#1205">1205 </a></span><span class="l"><a href="#1206">1206 </a></span><span class="l"><a href="#1207">1207 </a></span><span class="l"><a href="#1208">1208 </a></span><span class="l"><a href="#1209">1209 </a></span><span class="l"><a href="#1210">1210 </a></span><span class="l"><a href="#1211">1211 </a></span><span class="l"><a href="#1212">1212 </a></span><span class="l"><a href="#1213">1213 </a></span><span class="l"><a href="#1214">1214 </a></span><span class="l"><a href="#1215">1215 </a></span><span class="l"><a href="#1216">1216 </a></span><span class="l"><a href="#1217">1217 </a></span><span class="l"><a href="#1218">1218 </a></span><span class="l"><a href="#1219">1219 </a></span><span class="l"><a href="#1220">1220 </a></span><span class="l"><a href="#1221">1221 </a></span><span class="l"><a href="#1222">1222 </a></span><span class="l"><a href="#1223">1223 </a></span><span class="l"><a href="#1224">1224 </a></span><span class="l"><a href="#1225">1225 </a></span><span class="l"><a href="#1226">1226 </a></span><span class="l"><a href="#1227">1227 </a></span><span class="l"><a href="#1228">1228 </a></span><span class="l"><a href="#1229">1229 </a></span><span class="l"><a href="#1230">1230 </a></span><span class="l"><a href="#1231">1231 </a></span><span class="l"><a href="#1232">1232 </a></span><span class="l"><a href="#1233">1233 </a></span><span class="l"><a href="#1234">1234 </a></span><span class="l"><a href="#1235">1235 </a></span><span class="l"><a href="#1236">1236 </a></span><span class="l"><a href="#1237">1237 </a></span><span class="l"><a href="#1238">1238 </a></span><span class="l"><a href="#1239">1239 </a></span><span class="l"><a href="#1240">1240 </a></span><span class="l"><a href="#1241">1241 </a></span><span class="l"><a href="#1242">1242 </a></span><span class="l"><a href="#1243">1243 </a></span><span class="l"><a href="#1244">1244 </a></span><span class="l"><a href="#1245">1245 </a></span><span class="l"><a href="#1246">1246 </a></span><span class="l"><a href="#1247">1247 </a></span><span class="l"><a href="#1248">1248 </a></span><span class="l"><a href="#1249">1249 </a></span><span class="l"><a href="#1250">1250 </a></span><span class="l"><a href="#1251">1251 </a></span><span class="l"><a href="#1252">1252 </a></span><span class="l"><a href="#1253">1253 </a></span><span class="l"><a href="#1254">1254 </a></span><span class="l"><a href="#1255">1255 </a></span><span class="l"><a href="#1256">1256 </a></span><span class="l"><a href="#1257">1257 </a></span><span class="l"><a href="#1258">1258 </a></span><span class="l"><a href="#1259">1259 </a></span><span class="l"><a href="#1260">1260 </a></span><span class="l"><a href="#1261">1261 </a></span><span class="l"><a href="#1262">1262 </a></span><span class="l"><a href="#1263">1263 </a></span><span class="l"><a href="#1264">1264 </a></span><span class="l"><a href="#1265">1265 </a></span><span class="l"><a href="#1266">1266 </a></span><span class="l"><a href="#1267">1267 </a></span><span class="l"><a href="#1268">1268 </a></span><span class="l"><a href="#1269">1269 </a></span><span class="l"><a href="#1270">1270 </a></span><span class="l"><a href="#1271">1271 </a></span><span class="l"><a href="#1272">1272 </a></span><span class="l"><a href="#1273">1273 </a></span><span class="l"><a href="#1274">1274 </a></span><span class="l"><a href="#1275">1275 </a></span><span class="l"><a href="#1276">1276 </a></span><span class="l"><a href="#1277">1277 </a></span><span class="l"><a href="#1278">1278 </a></span><span class="l"><a href="#1279">1279 </a></span><span class="l"><a href="#1280">1280 </a></span><span class="l"><a href="#1281">1281 </a></span><span class="l"><a href="#1282">1282 </a></span><span class="l"><a href="#1283">1283 </a></span><span class="l"><a href="#1284">1284 </a></span><span class="l"><a href="#1285">1285 </a></span><span class="l"><a href="#1286">1286 </a></span><span class="l"><a href="#1287">1287 </a></span><span class="l"><a href="#1288">1288 </a></span><span class="l"><a href="#1289">1289 </a></span><span class="l"><a href="#1290">1290 </a></span><span class="l"><a href="#1291">1291 </a></span><span class="l"><a href="#1292">1292 </a></span><span class="l"><a href="#1293">1293 </a></span><span class="l"><a href="#1294">1294 </a></span><span class="l"><a href="#1295">1295 </a></span><span class="l"><a href="#1296">1296 </a></span><span class="l"><a href="#1297">1297 </a></span><span class="l"><a href="#1298">1298 </a></span><span class="l"><a href="#1299">1299 </a></span><span class="l"><a href="#1300">1300 </a></span><span class="l"><a href="#1301">1301 </a></span><span class="l"><a href="#1302">1302 </a></span><span class="l"><a href="#1303">1303 </a></span><span class="l"><a href="#1304">1304 </a></span><span class="l"><a href="#1305">1305 </a></span><span class="l"><a href="#1306">1306 </a></span><span class="l"><a href="#1307">1307 </a></span><span class="l"><a href="#1308">1308 </a></span><span class="l"><a href="#1309">1309 </a></span><span class="l"><a href="#1310">1310 </a></span><span class="l"><a href="#1311">1311 </a></span><span class="l"><a href="#1312">1312 </a></span><span class="l"><a href="#1313">1313 </a></span><span class="l"><a href="#1314">1314 </a></span><span class="l"><a href="#1315">1315 </a></span><span class="l"><a href="#1316">1316 </a></span><span class="l"><a href="#1317">1317 </a></span><span class="l"><a href="#1318">1318 </a></span><span class="l"><a href="#1319">1319 </a></span><span class="l"><a href="#1320">1320 </a></span><span class="l"><a href="#1321">1321 </a></span><span class="l"><a href="#1322">1322 </a></span><span class="l"><a href="#1323">1323 </a></span><span class="l"><a href="#1324">1324 </a></span><span class="l"><a href="#1325">1325 </a></span><span class="l"><a href="#1326">1326 </a></span><span class="l"><a href="#1327">1327 </a></span><span class="l"><a href="#1328">1328 </a></span><span class="l"><a href="#1329">1329 </a></span><span class="l"><a href="#1330">1330 </a></span><span class="l"><a href="#1331">1331 </a></span><span class="l"><a href="#1332">1332 </a></span><span class="l"><a href="#1333">1333 </a></span><span class="l"><a href="#1334">1334 </a></span><span class="l"><a href="#1335">1335 </a></span><span class="l"><a href="#1336">1336 </a></span><span class="l"><a href="#1337">1337 </a></span><span class="l"><a href="#1338">1338 </a></span><span class="l"><a href="#1339">1339 </a></span><span class="l"><a href="#1340">1340 </a></span><span class="l"><a href="#1341">1341 </a></span><span class="l"><a href="#1342">1342 </a></span><span class="l"><a href="#1343">1343 </a></span><span class="l"><a href="#1344">1344 </a></span><span class="l"><a href="#1345">1345 </a></span><span class="l"><a href="#1346">1346 </a></span><span class="l"><a href="#1347">1347 </a></span><span class="l"><a href="#1348">1348 </a></span><span class="l"><a href="#1349">1349 </a></span><span class="l"><a href="#1350">1350 </a></span><span class="l"><a href="#1351">1351 </a></span><span class="l"><a href="#1352">1352 </a></span><span class="l"><a href="#1353">1353 </a></span><span class="l"><a href="#1354">1354 </a></span><span class="l"><a href="#1355">1355 </a></span><span class="l"><a href="#1356">1356 </a></span><span class="l"><a href="#1357">1357 </a></span><span class="l"><a href="#1358">1358 </a></span><span class="l"><a href="#1359">1359 </a></span><span class="l"><a href="#1360">1360 </a></span><span class="l"><a href="#1361">1361 </a></span><span class="l"><a href="#1362">1362 </a></span><span class="l"><a href="#1363">1363 </a></span><span class="l"><a href="#1364">1364 </a></span><span class="l"><a href="#1365">1365 </a></span><span class="l"><a href="#1366">1366 </a></span><span class="l"><a href="#1367">1367 </a></span><span class="l"><a href="#1368">1368 </a></span><span class="l"><a href="#1369">1369 </a></span><span class="l"><a href="#1370">1370 </a></span><span class="l"><a href="#1371">1371 </a></span><span class="l"><a href="#1372">1372 </a></span><span class="l"><a href="#1373">1373 </a></span><span class="l"><a href="#1374">1374 </a></span><span class="l"><a href="#1375">1375 </a></span><span class="l"><a href="#1376">1376 </a></span><span class="l"><a href="#1377">1377 </a></span><span class="l"><a href="#1378">1378 </a></span><span class="l"><a href="#1379">1379 </a></span><span class="l"><a href="#1380">1380 </a></span><span class="l"><a href="#1381">1381 </a></span><span class="l"><a href="#1382">1382 </a></span><span class="l"><a href="#1383">1383 </a></span><span class="l"><a href="#1384">1384 </a></span><span class="l"><a href="#1385">1385 </a></span><span class="l"><a href="#1386">1386 </a></span><span class="l"><a href="#1387">1387 </a></span><span class="l"><a href="#1388">1388 </a></span><span class="l"><a href="#1389">1389 </a></span><span class="l"><a href="#1390">1390 </a></span><span class="l"><a href="#1391">1391 </a></span><span class="l"><a href="#1392">1392 </a></span><span class="l"><a href="#1393">1393 </a></span><span class="l"><a href="#1394">1394 </a></span><span class="l"><a href="#1395">1395 </a></span><span class="l"><a href="#1396">1396 </a></span><span class="l"><a href="#1397">1397 </a></span><span class="l"><a href="#1398">1398 </a></span><span class="l"><a href="#1399">1399 </a></span><span class="l"><a href="#1400">1400 </a></span><span class="l"><a href="#1401">1401 </a></span><span class="l"><a href="#1402">1402 </a></span><span class="l"><a href="#1403">1403 </a></span><span class="l"><a href="#1404">1404 </a></span><span class="l"><a href="#1405">1405 </a></span><span class="l"><a href="#1406">1406 </a></span><span class="l"><a href="#1407">1407 </a></span><span class="l"><a href="#1408">1408 </a></span><span class="l"><a href="#1409">1409 </a></span><span class="l"><a href="#1410">1410 </a></span><span class="l"><a href="#1411">1411 </a></span><span class="l"><a href="#1412">1412 </a></span><span class="l"><a href="#1413">1413 </a></span><span class="l"><a href="#1414">1414 </a></span><span class="l"><a href="#1415">1415 </a></span><span class="l"><a href="#1416">1416 </a></span><span class="l"><a href="#1417">1417 </a></span><span class="l"><a href="#1418">1418 </a></span><span class="l"><a href="#1419">1419 </a></span><span class="l"><a href="#1420">1420 </a></span><span class="l"><a href="#1421">1421 </a></span><span class="l"><a href="#1422">1422 </a></span><span class="l"><a href="#1423">1423 </a></span><span class="l"><a href="#1424">1424 </a></span><span class="l"><a href="#1425">1425 </a></span><span class="l"><a href="#1426">1426 </a></span><span class="l"><a href="#1427">1427 </a></span><span class="l"><a href="#1428">1428 </a></span><span class="l"><a href="#1429">1429 </a></span><span class="l"><a href="#1430">1430 </a></span><span class="l"><a href="#1431">1431 </a></span><span class="l"><a href="#1432">1432 </a></span><span class="l"><a href="#1433">1433 </a></span><span class="l"><a href="#1434">1434 </a></span><span class="l"><a href="#1435">1435 </a></span><span class="l"><a href="#1436">1436 </a></span><span class="l"><a href="#1437">1437 </a></span><span class="l"><a href="#1438">1438 </a></span><span class="l"><a href="#1439">1439 </a></span><span class="l"><a href="#1440">1440 </a></span><span class="l"><a href="#1441">1441 </a></span><span class="l"><a href="#1442">1442 </a></span><span class="l"><a href="#1443">1443 </a></span><span class="l"><a href="#1444">1444 </a></span><span class="l"><a href="#1445">1445 </a></span><span class="l"><a href="#1446">1446 </a></span><span class="l"><a href="#1447">1447 </a></span><span class="l"><a href="#1448">1448 </a></span><span class="l"><a href="#1449">1449 </a></span><span class="l"><a href="#1450">1450 </a></span><span class="l"><a href="#1451">1451 </a></span><span class="l"><a href="#1452">1452 </a></span><span class="l"><a href="#1453">1453 </a></span><span class="l"><a href="#1454">1454 </a></span><span class="l"><a href="#1455">1455 </a></span><span class="l"><a href="#1456">1456 </a></span><span class="l"><a href="#1457">1457 </a></span><span class="l"><a href="#1458">1458 </a></span><span class="l"><a href="#1459">1459 </a></span><span class="l"><a href="#1460">1460 </a></span><span class="l"><a href="#1461">1461 </a></span><span class="l"><a href="#1462">1462 </a></span><span class="l"><a href="#1463">1463 </a></span><span class="l"><a href="#1464">1464 </a></span><span class="l"><a href="#1465">1465 </a></span><span class="l"><a href="#1466">1466 </a></span><span class="l"><a href="#1467">1467 </a></span><span class="l"><a href="#1468">1468 </a></span><span class="l"><a href="#1469">1469 </a></span><span class="l"><a href="#1470">1470 </a></span><span class="l"><a href="#1471">1471 </a></span><span class="l"><a href="#1472">1472 </a></span><span class="l"><a href="#1473">1473 </a></span><span class="l"><a href="#1474">1474 </a></span><span class="l"><a href="#1475">1475 </a></span><span class="l"><a href="#1476">1476 </a></span><span class="l"><a href="#1477">1477 </a></span><span class="l"><a href="#1478">1478 </a></span><span class="l"><a href="#1479">1479 </a></span><span class="l"><a href="#1480">1480 </a></span><span class="l"><a href="#1481">1481 </a></span><span class="l"><a href="#1482">1482 </a></span><span class="l"><a href="#1483">1483 </a></span><span class="l"><a href="#1484">1484 </a></span><span class="l"><a href="#1485">1485 </a></span><span class="l"><a href="#1486">1486 </a></span><span class="l"><a href="#1487">1487 </a></span><span class="l"><a href="#1488">1488 </a></span><span class="l"><a href="#1489">1489 </a></span><span class="l"><a href="#1490">1490 </a></span><span class="l"><a href="#1491">1491 </a></span><span class="l"><a href="#1492">1492 </a></span><span class="l"><a href="#1493">1493 </a></span><span class="l"><a href="#1494">1494 </a></span><span class="l"><a href="#1495">1495 </a></span><span class="l"><a href="#1496">1496 </a></span><span class="l"><a href="#1497">1497 </a></span><span class="l"><a href="#1498">1498 </a></span><span class="l"><a href="#1499">1499 </a></span><span class="l"><a href="#1500">1500 </a></span><span class="l"><a href="#1501">1501 </a></span><span class="l"><a href="#1502">1502 </a></span><span class="l"><a href="#1503">1503 </a></span><span class="l"><a href="#1504">1504 </a></span><span class="l"><a href="#1505">1505 </a></span><span class="l"><a href="#1506">1506 </a></span><span class="l"><a href="#1507">1507 </a></span><span class="l"><a href="#1508">1508 </a></span><span class="l"><a href="#1509">1509 </a></span><span class="l"><a href="#1510">1510 </a></span><span class="l"><a href="#1511">1511 </a></span><span class="l"><a href="#1512">1512 </a></span><span class="l"><a href="#1513">1513 </a></span><span class="l"><a href="#1514">1514 </a></span><span class="l"><a href="#1515">1515 </a></span><span class="l"><a href="#1516">1516 </a></span><span class="l"><a href="#1517">1517 </a></span><span class="l"><a href="#1518">1518 </a></span><span class="l"><a href="#1519">1519 </a></span><span class="l"><a href="#1520">1520 </a></span><span class="l"><a href="#1521">1521 </a></span><span class="l"><a href="#1522">1522 </a></span><span class="l"><a href="#1523">1523 </a></span><span class="l"><a href="#1524">1524 </a></span><span class="l"><a href="#1525">1525 </a></span><span class="l"><a href="#1526">1526 </a></span><span class="l"><a href="#1527">1527 </a></span><span class="l"><a href="#1528">1528 </a></span><span class="l"><a href="#1529">1529 </a></span><span class="l"><a href="#1530">1530 </a></span><span class="l"><a href="#1531">1531 </a></span><span class="l"><a href="#1532">1532 </a></span><span class="l"><a href="#1533">1533 </a></span><span class="l"><a href="#1534">1534 </a></span><span class="l"><a href="#1535">1535 </a></span><span class="l"><a href="#1536">1536 </a></span><span class="l"><a href="#1537">1537 </a></span><span class="l"><a href="#1538">1538 </a></span><span class="l"><a href="#1539">1539 </a></span><span class="l"><a href="#1540">1540 </a></span><span class="l"><a href="#1541">1541 </a></span><span class="l"><a href="#1542">1542 </a></span><span class="l"><a href="#1543">1543 </a></span><span class="l"><a href="#1544">1544 </a></span><span class="l"><a href="#1545">1545 </a></span><span class="l"><a href="#1546">1546 </a></span><span class="l"><a href="#1547">1547 </a></span></span><span class="l"><a href="#1548">1548 </a></span></span><span class="l"><a href="#1549">1549 </a></span><span class="l"><a href="#1550">1550 </a></span><span class="l"><a href="#1551">1551 </a></span><span class="l"><a href="#1552">1552 </a></span><span class="l"><a href="#1553">1553 </a></span><span class="l"><a href="#1554">1554 </a></span><span class="l"><a href="#1555">1555 </a></span><span class="l"><a href="#1556">1556 </a></span><span class="l"><a href="#1557">1557 </a></span><span class="l"><a href="#1558">1558 </a></span><span class="l"><a href="#1559">1559 </a></span><span class="l"><a href="#1560">1560 </a></span><span class="l"><a href="#1561">1561 </a></span><span class="l"><a href="#1562">1562 </a></span><span class="l"><a href="#1563">1563 </a></span><span class="l"><a href="#1564">1564 </a></span><span class="l"><a href="#1565">1565 </a></span><span class="l"><a href="#1566">1566 </a></span><span class="l"><a href="#1567">1567 </a></span><span class="l"><a href="#1568">1568 </a></span><span class="l"><a href="#1569">1569 </a></span><span class="l"><a href="#1570">1570 </a></span><span class="l"><a href="#1571">1571 </a></span><span class="l"><a href="#1572">1572 </a></span><span class="l"><a href="#1573">1573 </a></span><span class="l"><a href="#1574">1574 </a></span><span class="l"><a href="#1575">1575 </a></span><span class="l"><a href="#1576">1576 </a></span><span class="l"><a href="#1577">1577 </a></span><span class="l"><a href="#1578">1578 </a></span><span class="l"><a href="#1579">1579 </a></span><span class="l"><a href="#1580">1580 </a></span><span class="l"><a href="#1581">1581 </a></span><span class="l"><a href="#1582">1582 </a></span><span class="l"><a href="#1583">1583 </a></span><span class="l"><a href="#1584">1584 </a></span><span class="l"><a href="#1585">1585 </a></span><span class="l"><a href="#1586">1586 </a></span><span class="l"><a href="#1587">1587 </a></span><span class="l"><a href="#1588">1588 </a></span><span class="l"><a href="#1589">1589 </a></span><span class="l"><a href="#1590">1590 </a></span><span class="l"><a href="#1591">1591 </a></span><span class="l"><a href="#1592">1592 </a></span><span class="l"><a href="#1593">1593 </a></span><span class="l"><a href="#1594">1594 </a></span><span class="l"><a href="#1595">1595 </a></span><span class="l"><a href="#1596">1596 </a></span><span class="l"><a href="#1597">1597 </a></span><span class="l"><a href="#1598">1598 </a></span><span class="l"><a href="#1599">1599 </a></span><span class="l"><a href="#1600">1600 </a></span><span class="l"><a href="#1601">1601 </a></span><span class="l"><a href="#1602">1602 </a></span><span class="l"><a href="#1603">1603 </a></span><span class="l"><a href="#1604">1604 </a></span><span class="l"><a href="#1605">1605 </a></span><span class="l"><a href="#1606">1606 </a></span><span class="l"><a href="#1607">1607 </a></span><span class="l"><a href="#1608">1608 </a></span></span><span class="l"><a href="#1609">1609 </a></span></span><span class="l"><a href="#1610">1610 </a></span><span class="l"><a href="#1611">1611 </a></span><span class="l"><a href="#1612">1612 </a></span><span class="l"><a href="#1613">1613 </a></span><span class="l"><a href="#1614">1614 </a></span><span class="l"><a href="#1615">1615 </a></span><span class="l"><a href="#1616">1616 </a></span><span class="l"><a href="#1617">1617 </a></span><span class="l"><a href="#1618">1618 </a></span><span class="l"><a href="#1619">1619 </a></span><span class="l"><a href="#1620">1620 </a></span><span class="l"><a href="#1621">1621 </a></span><span class="l"><a href="#1622">1622 </a></span><span class="l"><a href="#1623">1623 </a></span><span class="l"><a href="#1624">1624 </a></span><span class="l"><a href="#1625">1625 </a></span><span class="l"><a href="#1626">1626 </a></span><span class="l"><a href="#1627">1627 </a></span><span class="l"><a href="#1628">1628 </a></span><span class="l"><a href="#1629">1629 </a></span><span class="l"><a href="#1630">1630 </a></span><span class="l"><a href="#1631">1631 </a></span><span class="l"><a href="#1632">1632 </a></span></span><span class="l"><a href="#1633">1633 </a></span></span><span class="l"><a href="#1634">1634 </a></span><span class="l"><a href="#1635">1635 </a></span><span class="l"><a href="#1636">1636 </a></span><span class="l"><a href="#1637">1637 </a></span><span class="l"><a href="#1638">1638 </a></span><span class="l"><a href="#1639">1639 </a></span><span class="l"><a href="#1640">1640 </a></span><span class="l"><a href="#1641">1641 </a></span><span class="l"><a href="#1642">1642 </a></span><span class="l"><a href="#1643">1643 </a></span><span class="l"><a href="#1644">1644 </a></span><span class="l"><a href="#1645">1645 </a></span><span class="l"><a href="#1646">1646 </a></span><span class="l"><a href="#1647">1647 </a></span><span class="l"><a href="#1648">1648 </a></span><span class="l"><a href="#1649">1649 </a></span><span class="l"><a href="#1650">1650 </a></span><span class="l"><a href="#1651">1651 </a></span><span class="l"><a href="#1652">1652 </a></span><span class="l"><a href="#1653">1653 </a></span><span class="l"><a href="#1654">1654 </a></span><span class="l"><a href="#1655">1655 </a></span><span class="l"><a href="#1656">1656 </a></span><span class="l"><a href="#1657">1657 </a></span><span class="l"><a href="#1658">1658 </a></span><span class="l"><a href="#1659">1659 </a></span><span class="l"><a href="#1660">1660 </a></span><span class="l"><a href="#1661">1661 </a></span><span class="l"><a href="#1662">1662 </a></span><span class="l"><a href="#1663">1663 </a></span><span class="l"><a href="#1664">1664 </a></span><span class="l"><a href="#1665">1665 </a></span><span class="l"><a href="#1666">1666 </a></span><span class="l"><a href="#1667">1667 </a></span><span class="l"><a href="#1668">1668 </a></span><span class="l"><a href="#1669">1669 </a></span><span class="l"><a href="#1670">1670 </a></span><span class="l"><a href="#1671">1671 </a></span><span class="l"><a href="#1672">1672 </a></span></span><span class="l"><a href="#1673">1673 </a></span></span><span class="l"><a href="#1674">1674 </a></span></span><span class="l"><a href="#1675">1675 </a></span><span class="l"><a href="#1676">1676 </a></span><span class="l"><a href="#1677">1677 </a></span><span class="l"><a href="#1678">1678 </a></span><span class="l"><a href="#1679">1679 </a></span><span class="l"><a href="#1680">1680 </a></span><span class="l"><a href="#1681">1681 </a></span><span class="l"><a href="#1682">1682 </a></span><span class="l"><a href="#1683">1683 </a></span><span class="l"><a href="#1684">1684 </a></span><span class="l"><a href="#1685">1685 </a></span><span class="l"><a href="#1686">1686 </a></span><span class="l"><a href="#1687">1687 </a></span><span class="l"><a href="#1688">1688 </a></span><span class="l"><a href="#1689">1689 </a></span><span class="l"><a href="#1690">1690 </a></span><span class="l"><a href="#1691">1691 </a></span><span class="l"><a href="#1692">1692 </a></span><span class="l"><a href="#1693">1693 </a></span><span class="l"><a href="#1694">1694 </a></span><span class="l"><a href="#1695">1695 </a></span><span class="l"><a href="#1696">1696 </a></span><span class="l"><a href="#1697">1697 </a></span><span class="l"><a href="#1698">1698 </a></span><span class="l"><a href="#1699">1699 </a></span><span class="l"><a href="#1700">1700 </a></span><span class="l"><a href="#1701">1701 </a></span><span class="l"><a href="#1702">1702 </a></span><span class="l"><a href="#1703">1703 </a></span><span class="l"><a href="#1704">1704 </a></span><span class="l"><a href="#1705">1705 </a></span><span class="l"><a href="#1706">1706 </a></span><span class="l"><a href="#1707">1707 </a></span><span class="l"><a href="#1708">1708 </a></span><span class="l"><a href="#1709">1709 </a></span><span class="l"><a href="#1710">1710 </a></span><span class="l"><a href="#1711">1711 </a></span><span class="l"><a href="#1712">1712 </a></span><span class="l"><a href="#1713">1713 </a></span><span class="l"><a href="#1714">1714 </a></span><span class="l"><a href="#1715">1715 </a></span><span class="l"><a href="#1716">1716 </a></span><span class="l"><a href="#1717">1717 </a></span><span class="l"><a href="#1718">1718 </a></span><span class="l"><a href="#1719">1719 </a></span><span class="l"><a href="#1720">1720 </a></span><span class="l"><a href="#1721">1721 </a></span><span class="l"><a href="#1722">1722 </a></span><span class="l"><a href="#1723">1723 </a></span><span class="l"><a href="#1724">1724 </a></span><span class="l"><a href="#1725">1725 </a></span><span class="l"><a href="#1726">1726 </a></span><span class="l"><a href="#1727">1727 </a></span><span class="l"><a href="#1728">1728 </a></span><span class="l"><a href="#1729">1729 </a></span><span class="l"><a href="#1730">1730 </a></span><span class="l"><a href="#1731">1731 </a></span><span class="l"><a href="#1732">1732 </a></span><span class="l"><a href="#1733">1733 </a></span><span class="l"><a href="#1734">1734 </a></span><span class="l"><a href="#1735">1735 </a></span><span class="l"><a href="#1736">1736 </a></span><span class="l"><a href="#1737">1737 </a></span><span class="l"><a href="#1738">1738 </a></span><span class="l"><a href="#1739">1739 </a></span><span class="l"><a href="#1740">1740 </a></span><span class="l"><a href="#1741">1741 </a></span><span class="l"><a href="#1742">1742 </a></span><span class="l"><a href="#1743">1743 </a></span><span class="l"><a href="#1744">1744 </a></span><span class="l"><a href="#1745">1745 </a></span><span class="l"><a href="#1746">1746 </a></span><span class="l"><a href="#1747">1747 </a></span><span class="l"><a href="#1748">1748 </a></span><span class="l"><a href="#1749">1749 </a></span><span class="l"><a href="#1750">1750 </a></span><span class="l"><a href="#1751">1751 </a></span><span class="l"><a href="#1752">1752 </a></span><span class="l"><a href="#1753">1753 </a></span><span class="l"><a href="#1754">1754 </a></span><span class="l"><a href="#1755">1755 </a></span><span class="l"><a href="#1756">1756 </a></span><span class="l"><a href="#1757">1757 </a></span><span class="l"><a href="#1758">1758 </a></span><span class="l"><a href="#1759">1759 </a></span><span class="l"><a href="#1760">1760 </a></span><span class="l"><a href="#1761">1761 </a></span><span class="l"><a href="#1762">1762 </a></span><span class="l"><a href="#1763">1763 </a></span><span class="l"><a href="#1764">1764 </a></span><span class="l"><a href="#1765">1765 </a></span><span class="l"><a href="#1766">1766 </a></span><span class="l"><a href="#1767">1767 </a></span><span class="l"><a href="#1768">1768 </a></span><span class="l"><a href="#1769">1769 </a></span><span class="l"><a href="#1770">1770 </a></span><span class="l"><a href="#1771">1771 </a></span><span class="l"><a href="#1772">1772 </a></span><span class="l"><a href="#1773">1773 </a></span><span class="l"><a href="#1774">1774 </a></span><span class="l"><a href="#1775">1775 </a></span><span class="l"><a href="#1776">1776 </a></span><span class="l"><a href="#1777">1777 </a></span><span class="l"><a href="#1778">1778 </a></span><span class="l"><a href="#1779">1779 </a></span><span class="l"><a href="#1780">1780 </a></span><span class="l"><a href="#1781">1781 </a></span><span class="l"><a href="#1782">1782 </a></span><span class="l"><a href="#1783">1783 </a></span><span class="l"><a href="#1784">1784 </a></span><span class="l"><a href="#1785">1785 </a></span><span class="l"><a href="#1786">1786 </a></span><span class="l"><a href="#1787">1787 </a></span><span class="l"><a href="#1788">1788 </a></span><span class="l"><a href="#1789">1789 </a></span><span class="l"><a href="#1790">1790 </a></span><span class="l"><a href="#1791">1791 </a></span><span class="l"><a href="#1792">1792 </a></span><span class="l"><a href="#1793">1793 </a></span><span class="l"><a href="#1794">1794 </a></span><span class="l"><a href="#1795">1795 </a></span><span class="l"><a href="#1796">1796 </a></span><span class="l"><a href="#1797">1797 </a></span><span class="l"><a href="#1798">1798 </a></span><span class="l"><a href="#1799">1799 </a></span><span class="l"><a href="#1800">1800 </a></span><span class="l"><a href="#1801">1801 </a></span></span><span class="l"><a href="#1802">1802 </a></span></span><span class="l"><a href="#1803">1803 </a></span><span class="l"><a href="#1804">1804 </a></span><span class="l"><a href="#1805">1805 </a></span><span class="l"><a href="#1806">1806 </a></span><span class="l"><a href="#1807">1807 </a></span><span class="l"><a href="#1808">1808 </a></span><span class="l"><a href="#1809">1809 </a></span><span class="l"><a href="#1810">1810 </a></span><span class="l"><a href="#1811">1811 </a></span><span class="l"><a href="#1812">1812 </a></span><span class="l"><a href="#1813">1813 </a></span><span class="l"><a href="#1814">1814 </a></span><span class="l"><a href="#1815">1815 </a></span><span class="l"><a href="#1816">1816 </a></span></span><span class="l"><a href="#1817">1817 </a></span></span><span class="l"><a href="#1818">1818 </a></span></span><span class="l"><a href="#1819">1819 </a></span></span><span class="l"><a href="#1820">1820 </a></span></span><span class="l"><a href="#1821">1821 </a></span></span><span class="l"><a href="#1822">1822 </a></span></span><span class="l"><a href="#1823">1823 </a></span><span class="l"><a href="#1824">1824 </a></span><span class="l"><a href="#1825">1825 </a></span><span class="l"><a href="#1826">1826 </a></span><span class="l"><a href="#1827">1827 </a></span><span class="l"><a href="#1828">1828 </a></span><span class="l"><a href="#1829">1829 </a></span><span class="l"><a href="#1830">1830 </a></span><span class="l"><a href="#1831">1831 </a></span><span class="l"><a href="#1832">1832 </a></span><span class="l"><a href="#1833">1833 </a></span><span class="l"><a href="#1834">1834 </a></span><span class="l"><a href="#1835">1835 </a></span><span class="l"><a href="#1836">1836 </a></span><span class="l"><a href="#1837">1837 </a></span><span class="l"><a href="#1838">1838 </a></span><span class="l"><a href="#1839">1839 </a></span><span class="l"><a href="#1840">1840 </a></span><span class="l"><a href="#1841">1841 </a></span></span><span class="l"><a href="#1842">1842 </a></span></span><span class="l"><a href="#1843">1843 </a></span></span><span class="l"><a href="#1844">1844 </a></span></span><span class="l"><a href="#1845">1845 </a></span></span><span class="l"><a href="#1846">1846 </a></span></span><span class="l"><a href="#1847">1847 </a></span></span><span class="l"><a href="#1848">1848 </a></span></span><span class="l"><a href="#1849">1849 </a></span><span class="l"><a href="#1850">1850 </a></span><span class="l"><a href="#1851">1851 </a></span><span class="l"><a href="#1852">1852 </a></span><span class="l"><a href="#1853">1853 </a></span><span class="l"><a href="#1854">1854 </a></span><span class="l"><a href="#1855">1855 </a></span><span class="l"><a href="#1856">1856 </a></span><span class="l"><a href="#1857">1857 </a></span><span class="l"><a href="#1858">1858 </a></span><span class="l"><a href="#1859">1859 </a></span><span class="l"><a href="#1860">1860 </a></span><span class="l"><a href="#1861">1861 </a></span></span><span class="l"><a href="#1862">1862 </a></span></span><span class="l"><a href="#1863">1863 </a></span></span><span class="l"><a href="#1864">1864 </a></span></span><span class="l"><a href="#1865">1865 </a></span></span><span class="l"><a href="#1866">1866 </a></span></span><span class="l"><a href="#1867">1867 </a></span></span><span class="l"><a href="#1868">1868 </a></span></span><span class="l"><a href="#1869">1869 </a></span></span><span class="l"><a href="#1870">1870 </a></span><span class="l"><a href="#1871">1871 </a></span><span class="l"><a href="#1872">1872 </a></span><span class="l"><a href="#1873">1873 </a></span><span class="l"><a href="#1874">1874 </a></span><span class="l"><a href="#1875">1875 </a></span><span class="l"><a href="#1876">1876 </a></span><span class="l"><a href="#1877">1877 </a></span><span class="l"><a href="#1878">1878 </a></span><span class="l"><a href="#1879">1879 </a></span><span class="l"><a href="#1880">1880 </a></span><span class="l"><a href="#1881">1881 </a></span><span class="l"><a href="#1882">1882 </a></span><span class="l"><a href="#1883">1883 </a></span><span class="l"><a href="#1884">1884 </a></span><span class="l"><a href="#1885">1885 </a></span><span class="l"><a href="#1886">1886 </a></span><span class="l"><a href="#1887">1887 </a></span><span class="l"><a href="#1888">1888 </a></span><span class="l"><a href="#1889">1889 </a></span><span class="l"><a href="#1890">1890 </a></span><span class="l"><a href="#1891">1891 </a></span><span class="l"><a href="#1892">1892 </a></span><span class="l"><a href="#1893">1893 </a></span><span class="l"><a href="#1894">1894 </a></span><span class="l"><a href="#1895">1895 </a></span><span class="l"><a href="#1896">1896 </a></span><span class="l"><a href="#1897">1897 </a></span><span class="l"><a href="#1898">1898 </a></span><span class="l"><a href="#1899">1899 </a></span><span class="l"><a href="#1900">1900 </a></span><span class="l"><a href="#1901">1901 </a></span><span class="l"><a href="#1902">1902 </a></span><span class="l"><a href="#1903">1903 </a></span><span class="l"><a href="#1904">1904 </a></span><span class="l"><a href="#1905">1905 </a></span><span class="l"><a href="#1906">1906 </a></span><span class="l"><a href="#1907">1907 </a></span><span class="l"><a href="#1908">1908 </a></span><span class="l"><a href="#1909">1909 </a></span><span class="l"><a href="#1910">1910 </a></span><span class="l"><a href="#1911">1911 </a></span><span class="l"><a href="#1912">1912 </a></span><span class="l"><a href="#1913">1913 </a></span><span class="l"><a href="#1914">1914 </a></span><span class="l"><a href="#1915">1915 </a></span><span class="l"><a href="#1916">1916 </a></span><span class="l"><a href="#1917">1917 </a></span><span class="l"><a href="#1918">1918 </a></span><span class="l"><a href="#1919">1919 </a></span><span class="l"><a href="#1920">1920 </a></span><span class="l"><a href="#1921">1921 </a></span><span class="l"><a href="#1922">1922 </a></span><span class="l"><a href="#1923">1923 </a></span><span class="l"><a href="#1924">1924 </a></span><span class="l"><a href="#1925">1925 </a></span><span class="l"><a href="#1926">1926 </a></span><span class="l"><a href="#1927">1927 </a></span><span class="l"><a href="#1928">1928 </a></span><span class="l"><a href="#1929">1929 </a></span><span class="l"><a href="#1930">1930 </a></span><span class="l"><a href="#1931">1931 </a></span><span class="l"><a href="#1932">1932 </a></span><span class="l"><a href="#1933">1933 </a></span><span class="l"><a href="#1934">1934 </a></span><span class="l"><a href="#1935">1935 </a></span><span class="l"><a href="#1936">1936 </a></span><span class="l"><a href="#1937">1937 </a></span><span class="l"><a href="#1938">1938 </a></span><span class="l"><a href="#1939">1939 </a></span><span class="l"><a href="#1940">1940 </a></span><span class="l"><a href="#1941">1941 </a></span><span class="l"><a href="#1942">1942 </a></span><span class="l"><a href="#1943">1943 </a></span><span class="l"><a href="#1944">1944 </a></span><span class="l"><a href="#1945">1945 </a></span><span class="l"><a href="#1946">1946 </a></span><span class="l"><a href="#1947">1947 </a></span><span class="l"><a href="#1948">1948 </a></span><span class="l"><a href="#1949">1949 </a></span><span class="l"><a href="#1950">1950 </a></span><span class="l"><a href="#1951">1951 </a></span><span class="l"><a href="#1952">1952 </a></span><span class="l"><a href="#1953">1953 </a></span><span class="l"><a href="#1954">1954 </a></span><span class="l"><a href="#1955">1955 </a></span><span class="l"><a href="#1956">1956 </a></span></span><span class="l"><a href="#1957">1957 </a></span></span><span class="l"><a href="#1958">1958 </a></span></span><span class="l"><a href="#1959">1959 </a></span></span><span class="l"><a href="#1960">1960 </a></span></span><span class="l"><a href="#1961">1961 </a></span></span><span class="l"><a href="#1962">1962 </a></span></span><span class="l"><a href="#1963">1963 </a></span></span><span class="l"><a href="#1964">1964 </a></span><span class="l"><a href="#1965">1965 </a></span><span class="l"><a href="#1966">1966 </a></span><span class="l"><a href="#1967">1967 </a></span><span class="l"><a href="#1968">1968 </a></span><span class="l"><a href="#1969">1969 </a></span><span class="l"><a href="#1970">1970 </a></span><span class="l"><a href="#1971">1971 </a></span><span class="l"><a href="#1972">1972 </a></span><span class="l"><a href="#1973">1973 </a></span><span class="l"><a href="#1974">1974 </a></span><span class="l"><a href="#1975">1975 </a></span><span class="l"><a href="#1976">1976 </a></span><span class="l"><a href="#1977">1977 </a></span><span class="l"><a href="#1978">1978 </a></span><span class="l"><a href="#1979">1979 </a></span><span class="l"><a href="#1980">1980 </a></span><span class="l"><a href="#1981">1981 </a></span><span class="l"><a href="#1982">1982 </a></span><span class="l"><a href="#1983">1983 </a></span><span class="l"><a href="#1984">1984 </a></span><span class="l"><a href="#1985">1985 </a></span><span class="l"><a href="#1986">1986 </a></span><span class="l"><a href="#1987">1987 </a></span><span class="l"><a href="#1988">1988 </a></span><span class="l"><a href="#1989">1989 </a></span><span class="l"><a href="#1990">1990 </a></span><span class="l"><a href="#1991">1991 </a></span><span class="l"><a href="#1992">1992 </a></span><span class="l"><a href="#1993">1993 </a></span><span class="l"><a href="#1994">1994 </a></span><span class="l"><a href="#1995">1995 </a></span><span class="l"><a href="#1996">1996 </a></span><span class="l"><a href="#1997">1997 </a></span><span class="l"><a href="#1998">1998 </a></span><span class="l"><a href="#1999">1999 </a></span><span class="l"><a href="#2000">2000 </a></span><span class="l"><a href="#2001">2001 </a></span><span class="l"><a href="#2002">2002 </a></span><span class="l"><a href="#2003">2003 </a></span><span class="l"><a href="#2004">2004 </a></span><span class="l"><a href="#2005">2005 </a></span><span class="l"><a href="#2006">2006 </a></span><span class="l"><a href="#2007">2007 </a></span><span class="l"><a href="#2008">2008 </a></span><span class="l"><a href="#2009">2009 </a></span><span class="l"><a href="#2010">2010 </a></span><span class="l"><a href="#2011">2011 </a></span><span class="l"><a href="#2012">2012 </a></span><span class="l"><a href="#2013">2013 </a></span><span class="l"><a href="#2014">2014 </a></span><span class="l"><a href="#2015">2015 </a></span><span class="l"><a href="#2016">2016 </a></span><span class="l"><a href="#2017">2017 </a></span><span class="l"><a href="#2018">2018 </a></span><span class="l"><a href="#2019">2019 </a></span><span class="l"><a href="#2020">2020 </a></span><span class="l"><a href="#2021">2021 </a></span><span class="l"><a href="#2022">2022 </a></span><span class="l"><a href="#2023">2023 </a></span><span class="l"><a href="#2024">2024 </a></span><span class="l"><a href="#2025">2025 </a></span><span class="l"><a href="#2026">2026 </a></span><span class="l"><a href="#2027">2027 </a></span><span class="l"><a href="#2028">2028 </a></span><span class="l"><a href="#2029">2029 </a></span><span class="l"><a href="#2030">2030 </a></span><span class="l"><a href="#2031">2031 </a></span><span class="l"><a href="#2032">2032 </a></span><span class="l"><a href="#2033">2033 </a></span><span class="l"><a href="#2034">2034 </a></span><span class="l"><a href="#2035">2035 </a></span><span class="l"><a href="#2036">2036 </a></span><span class="l"><a href="#2037">2037 </a></span><span class="l"><a href="#2038">2038 </a></span><span class="l"><a href="#2039">2039 </a></span><span class="l"><a href="#2040">2040 </a></span><span class="l"><a href="#2041">2041 </a></span><span class="l"><a href="#2042">2042 </a></span><span class="l"><a href="#2043">2043 </a></span><span class="l"><a href="#2044">2044 </a></span></span><span class="l"><a href="#2045">2045 </a></span></span><span class="l"><a href="#2046">2046 </a></span></span><span class="l"><a href="#2047">2047 </a></span></span><span class="l"><a href="#2048">2048 </a></span></span><span class="l"><a href="#2049">2049 </a></span></span><span class="l"><a href="#2050">2050 </a></span></span><span class="l"><a href="#2051">2051 </a></span></span><span class="l"><a href="#2052">2052 </a></span><span class="l"><a href="#2053">2053 </a></span><span class="l"><a href="#2054">2054 </a></span><span class="l"><a href="#2055">2055 </a></span><span class="l"><a href="#2056">2056 </a></span><span class="l"><a href="#2057">2057 </a></span><span class="l"><a href="#2058">2058 </a></span><span class="l"><a href="#2059">2059 </a></span><span class="l"><a href="#2060">2060 </a></span></span><span class="l"><a href="#2061">2061 </a></span></span><span class="l"><a href="#2062">2062 </a></span></span><span class="l"><a href="#2063">2063 </a></span></span><span class="l"><a href="#2064">2064 </a></span></span><span class="l"><a href="#2065">2065 </a></span></span><span class="l"><a href="#2066">2066 </a></span></span><span class="l"><a href="#2067">2067 </a></span></span><span class="l"><a href="#2068">2068 </a></span><span class="l"><a href="#2069">2069 </a></span><span class="l"><a href="#2070">2070 </a></span><span class="l"><a href="#2071">2071 </a></span><span class="l"><a href="#2072">2072 </a></span><span class="l"><a href="#2073">2073 </a></span><span class="l"><a href="#2074">2074 </a></span><span class="l"><a href="#2075">2075 </a></span><span class="l"><a href="#2076">2076 </a></span></span><span class="l"><a href="#2077">2077 </a></span></span><span class="l"><a href="#2078">2078 </a></span><span class="l"><a href="#2079">2079 </a></span><span class="l"><a href="#2080">2080 </a></span><span class="l"><a href="#2081">2081 </a></span><span class="l"><a href="#2082">2082 </a></span><span class="l"><a href="#2083">2083 </a></span><span class="l"><a href="#2084">2084 </a></span></span><span class="l"><a href="#2085">2085 </a></span></span><span class="l"><a href="#2086">2086 </a></span></span><span class="l"><a href="#2087">2087 </a></span></span><span class="l"><a href="#2088">2088 </a></span></span><span class="l"><a href="#2089">2089 </a></span></span><span class="l"><a href="#2090">2090 </a></span></span><span class="l"><a href="#2091">2091 </a></span><span class="l"><a href="#2092">2092 </a></span><span class="l"><a href="#2093">2093 </a></span><span class="l"><a href="#2094">2094 </a></span><span class="l"><a href="#2095">2095 </a></span><span class="l"><a href="#2096">2096 </a></span><span class="l"><a href="#2097">2097 </a></span><span class="l"><a href="#2098">2098 </a></span><span class="l"><a href="#2099">2099 </a></span><span class="l"><a href="#2100">2100 </a></span><span class="l"><a href="#2101">2101 </a></span><span class="l"><a href="#2102">2102 </a></span><span class="l"><a href="#2103">2103 </a></span><span class="l"><a href="#2104">2104 </a></span><span class="l"><a href="#2105">2105 </a></span><span class="l"><a href="#2106">2106 </a></span><span class="l"><a href="#2107">2107 </a></span></span><span class="l"><a href="#2108">2108 </a></span></span><span class="l"><a href="#2109">2109 </a></span></span><span class="l"><a href="#2110">2110 </a></span></span><span class="l"><a href="#2111">2111 </a></span></span><span class="l"><a href="#2112">2112 </a></span></span><span class="l"><a href="#2113">2113 </a></span></span><span class="l"><a href="#2114">2114 </a></span></span><span class="l"><a href="#2115">2115 </a></span><span class="l"><a href="#2116">2116 </a></span><span class="l"><a href="#2117">2117 </a></span><span class="l"><a href="#2118">2118 </a></span><span class="l"><a href="#2119">2119 </a></span><span class="l"><a href="#2120">2120 </a></span><span class="l"><a href="#2121">2121 </a></span><span class="l"><a href="#2122">2122 </a></span><span class="l"><a href="#2123">2123 </a></span><span class="l"><a href="#2124">2124 </a></span><span class="l"><a href="#2125">2125 </a></span><span class="l"><a href="#2126">2126 </a></span><span class="l"><a href="#2127">2127 </a></span><span class="l"><a href="#2128">2128 </a></span><span class="l"><a href="#2129">2129 </a></span><span class="l"><a href="#2130">2130 </a></span><span class="l"><a href="#2131">2131 </a></span><span class="l"><a href="#2132">2132 </a></span><span class="l"><a href="#2133">2133 </a></span><span class="l"><a href="#2134">2134 </a></span><span class="l"><a href="#2135">2135 </a></span><span class="l"><a href="#2136">2136 </a></span><span class="l"><a href="#2137">2137 </a></span><span class="l"><a href="#2138">2138 </a></span><span class="l"><a href="#2139">2139 </a></span><span class="l"><a href="#2140">2140 </a></span><span class="l"><a href="#2141">2141 </a></span><span class="l"><a href="#2142">2142 </a></span><span class="l"><a href="#2143">2143 </a></span><span class="l"><a href="#2144">2144 </a></span><span class="l"><a href="#2145">2145 </a></span><span class="l"><a href="#2146">2146 </a></span><span class="l"><a href="#2147">2147 </a></span><span class="l"><a href="#2148">2148 </a></span><span class="l"><a href="#2149">2149 </a></span><span class="l"><a href="#2150">2150 </a></span><span class="l"><a href="#2151">2151 </a></span><span class="l"><a href="#2152">2152 </a></span><span class="l"><a href="#2153">2153 </a></span><span class="l"><a href="#2154">2154 </a></span><span class="l"><a href="#2155">2155 </a></span><span class="l"><a href="#2156">2156 </a></span><span class="l"><a href="#2157">2157 </a></span><span class="l"><a href="#2158">2158 </a></span><span class="l"><a href="#2159">2159 </a></span><span class="l"><a href="#2160">2160 </a></span><span class="l"><a href="#2161">2161 </a></span><span class="l"><a href="#2162">2162 </a></span><span class="l"><a href="#2163">2163 </a></span><span class="l"><a href="#2164">2164 </a></span><span class="l"><a href="#2165">2165 </a></span><span class="l"><a href="#2166">2166 </a></span><span class="l"><a href="#2167">2167 </a></span><span class="l"><a href="#2168">2168 </a></span><span class="l"><a href="#2169">2169 </a></span><span class="l"><a href="#2170">2170 </a></span><span class="l"><a href="#2171">2171 </a></span><span class="l"><a href="#2172">2172 </a></span><span class="l"><a href="#2173">2173 </a></span><span class="l"><a href="#2174">2174 </a></span><span class="l"><a href="#2175">2175 </a></span><span class="l"><a href="#2176">2176 </a></span><span class="l"><a href="#2177">2177 </a></span><span class="l"><a href="#2178">2178 </a></span><span class="l"><a href="#2179">2179 </a></span><span class="l"><a href="#2180">2180 </a></span><span class="l"><a href="#2181">2181 </a></span><span class="l"><a href="#2182">2182 </a></span><span class="l"><a href="#2183">2183 </a></span><span class="l"><a href="#2184">2184 </a></span><span class="l"><a href="#2185">2185 </a></span><span class="l"><a href="#2186">2186 </a></span><span class="l"><a href="#2187">2187 </a></span><span class="l"><a href="#2188">2188 </a></span><span class="l"><a href="#2189">2189 </a></span><span class="l"><a href="#2190">2190 </a></span><span class="l"><a href="#2191">2191 </a></span></span><span class="l"><a href="#2192">2192 </a></span></span><span class="l"><a href="#2193">2193 </a></span></span><span class="l"><a href="#2194">2194 </a></span></span><span class="l"><a href="#2195">2195 </a></span></span><span class="l"><a href="#2196">2196 </a></span></span><span class="l"><a href="#2197">2197 </a></span><span class="l"><a href="#2198">2198 </a></span><span class="l"><a href="#2199">2199 </a></span><span class="l"><a href="#2200">2200 </a></span><span class="l"><a href="#2201">2201 </a></span><span class="l"><a href="#2202">2202 </a></span><span class="l"><a href="#2203">2203 </a></span><span class="l"><a href="#2204">2204 </a></span><span class="l"><a href="#2205">2205 </a></span><span class="l"><a href="#2206">2206 </a></span><span class="l"><a href="#2207">2207 </a></span><span class="l"><a href="#2208">2208 </a></span><span class="l"><a href="#2209">2209 </a></span><span class="l"><a href="#2210">2210 </a></span><span class="l"><a href="#2211">2211 </a></span><span class="l"><a href="#2212">2212 </a></span><span class="l"><a href="#2213">2213 </a></span><span class="l"><a href="#2214">2214 </a></span><span class="l"><a href="#2215">2215 </a></span></span><span class="l"><a href="#2216">2216 </a></span></span><span class="l"><a href="#2217">2217 </a></span><span class="l"><a href="#2218">2218 </a></span><span class="l"><a href="#2219">2219 </a></span><span class="l"><a href="#2220">2220 </a></span><span class="l"><a href="#2221">2221 </a></span><span class="l"><a href="#2222">2222 </a></span><span class="l"><a href="#2223">2223 </a></span><span class="l"><a href="#2224">2224 </a></span></span><span class="l"><a href="#2225">2225 </a></span></span><span class="l"><a href="#2226">2226 </a></span></span><span class="l"><a href="#2227">2227 </a></span><span class="l"><a href="#2228">2228 </a></span><span class="l"><a href="#2229">2229 </a></span><span class="l"><a href="#2230">2230 </a></span><span class="l"><a href="#2231">2231 </a></span><span class="l"><a href="#2232">2232 </a></span><span class="l"><a href="#2233">2233 </a></span><span class="l"><a href="#2234">2234 </a></span><span class="l"><a href="#2235">2235 </a></span><span class="l"><a href="#2236">2236 </a></span><span class="l"><a href="#2237">2237 </a></span><span class="l"><a href="#2238">2238 </a></span><span class="l"><a href="#2239">2239 </a></span><span class="l"><a href="#2240">2240 </a></span><span class="l"><a href="#2241">2241 </a></span><span class="l"><a href="#2242">2242 </a></span><span class="l"><a href="#2243">2243 </a></span><span class="l"><a href="#2244">2244 </a></span><span class="l"><a href="#2245">2245 </a></span><span class="l"><a href="#2246">2246 </a></span><span class="l"><a href="#2247">2247 </a></span><span class="l"><a href="#2248">2248 </a></span><span class="l"><a href="#2249">2249 </a></span><span class="l"><a href="#2250">2250 </a></span><span class="l"><a href="#2251">2251 </a></span><span class="l"><a href="#2252">2252 </a></span><span class="l"><a href="#2253">2253 </a></span><span class="l"><a href="#2254">2254 </a></span><span class="l"><a href="#2255">2255 </a></span><span class="l"><a href="#2256">2256 </a></span><span class="l"><a href="#2257">2257 </a></span><span class="l"><a href="#2258">2258 </a></span><span class="l"><a href="#2259">2259 </a></span><span class="l"><a href="#2260">2260 </a></span><span class="l"><a href="#2261">2261 </a></span><span class="l"><a href="#2262">2262 </a></span><span class="l"><a href="#2263">2263 </a></span><span class="l"><a href="#2264">2264 </a></span><span class="l"><a href="#2265">2265 </a></span><span class="l"><a href="#2266">2266 </a></span><span class="l"><a href="#2267">2267 </a></span><span class="l"><a href="#2268">2268 </a></span><span class="l"><a href="#2269">2269 </a></span><span class="l"><a href="#2270">2270 </a></span><span class="l"><a href="#2271">2271 </a></span><span class="l"><a href="#2272">2272 </a></span><span class="l"><a href="#2273">2273 </a></span><span class="l"><a href="#2274">2274 </a></span><span class="l"><a href="#2275">2275 </a></span><span class="l"><a href="#2276">2276 </a></span><span class="l"><a href="#2277">2277 </a></span><span class="l"><a href="#2278">2278 </a></span><span class="l"><a href="#2279">2279 </a></span><span class="l"><a href="#2280">2280 </a></span><span class="l"><a href="#2281">2281 </a></span><span class="l"><a href="#2282">2282 </a></span><span class="l"><a href="#2283">2283 </a></span><span class="l"><a href="#2284">2284 </a></span><span class="l"><a href="#2285">2285 </a></span><span class="l"><a href="#2286">2286 </a></span><span class="l"><a href="#2287">2287 </a></span><span class="l"><a href="#2288">2288 </a></span><span class="l"><a href="#2289">2289 </a></span><span class="l"><a href="#2290">2290 </a></span><span class="l"><a href="#2291">2291 </a></span><span class="l"><a href="#2292">2292 </a></span><span class="l"><a href="#2293">2293 </a></span><span class="l"><a href="#2294">2294 </a></span><span class="l"><a href="#2295">2295 </a></span><span class="l"><a href="#2296">2296 </a></span><span class="l"><a href="#2297">2297 </a></span><span class="l"><a href="#2298">2298 </a></span><span class="l"><a href="#2299">2299 </a></span><span class="l"><a href="#2300">2300 </a></span><span class="l"><a href="#2301">2301 </a></span><span class="l"><a href="#2302">2302 </a></span><span class="l"><a href="#2303">2303 </a></span><span class="l"><a href="#2304">2304 </a></span><span class="l"><a href="#2305">2305 </a></span><span class="l"><a href="#2306">2306 </a></span><span class="l"><a href="#2307">2307 </a></span><span class="l"><a href="#2308">2308 </a></span><span class="l"><a href="#2309">2309 </a></span><span class="l"><a href="#2310">2310 </a></span><span class="l"><a href="#2311">2311 </a></span><span class="l"><a href="#2312">2312 </a></span><span class="l"><a href="#2313">2313 </a></span><span class="l"><a href="#2314">2314 </a></span><span class="l"><a href="#2315">2315 </a></span><span class="l"><a href="#2316">2316 </a></span><span class="l"><a href="#2317">2317 </a></span><span class="l"><a href="#2318">2318 </a></span><span class="l"><a href="#2319">2319 </a></span><span class="l"><a href="#2320">2320 </a></span><span class="l"><a href="#2321">2321 </a></span><span class="l"><a href="#2322">2322 </a></span><span class="l"><a href="#2323">2323 </a></span><span class="l"><a href="#2324">2324 </a></span><span class="l"><a href="#2325">2325 </a></span><span class="l"><a href="#2326">2326 </a></span><span class="l"><a href="#2327">2327 </a></span><span class="l"><a href="#2328">2328 </a></span><span class="l"><a href="#2329">2329 </a></span><span class="l"><a href="#2330">2330 </a></span><span class="l"><a href="#2331">2331 </a></span><span class="l"><a href="#2332">2332 </a></span><span class="l"><a href="#2333">2333 </a></span><span class="l"><a href="#2334">2334 </a></span><span class="l"><a href="#2335">2335 </a></span><span class="l"><a href="#2336">2336 </a></span><span class="l"><a href="#2337">2337 </a></span><span class="l"><a href="#2338">2338 </a></span><span class="l"><a href="#2339">2339 </a></span><span class="l"><a href="#2340">2340 </a></span><span class="l"><a href="#2341">2341 </a></span><span class="l"><a href="#2342">2342 </a></span><span class="l"><a href="#2343">2343 </a></span><span class="l"><a href="#2344">2344 </a></span><span class="l"><a href="#2345">2345 </a></span><span class="l"><a href="#2346">2346 </a></span><span class="l"><a href="#2347">2347 </a></span></span><span class="l"><a href="#2348">2348 </a></span></span><span class="l"><a href="#2349">2349 </a></span></span><span class="l"><a href="#2350">2350 </a></span></span><span class="l"><a href="#2351">2351 </a></span></span><span class="l"><a href="#2352">2352 </a></span></span><span class="l"><a href="#2353">2353 </a></span></span><span class="l"><a href="#2354">2354 </a></span></span><span class="l"><a href="#2355">2355 </a></span><span class="l"><a href="#2356">2356 </a></span><span class="l"><a href="#2357">2357 </a></span><span class="l"><a href="#2358">2358 </a></span><span class="l"><a href="#2359">2359 </a></span><span class="l"><a href="#2360">2360 </a></span><span class="l"><a href="#2361">2361 </a></span><span class="l"><a href="#2362">2362 </a></span><span class="l"><a href="#2363">2363 </a></span><span class="l"><a href="#2364">2364 </a></span><span class="l"><a href="#2365">2365 </a></span><span class="l"><a href="#2366">2366 </a></span><span class="l"><a href="#2367">2367 </a></span><span class="l"><a href="#2368">2368 </a></span><span class="l"><a href="#2369">2369 </a></span><span class="l"><a href="#2370">2370 </a></span><span class="l"><a href="#2371">2371 </a></span><span class="l"><a href="#2372">2372 </a></span><span class="l"><a href="#2373">2373 </a></span><span class="l"><a href="#2374">2374 </a></span><span class="l"><a href="#2375">2375 </a></span><span class="l"><a href="#2376">2376 </a></span><span class="l"><a href="#2377">2377 </a></span><span class="l"><a href="#2378">2378 </a></span><span class="l"><a href="#2379">2379 </a></span><span class="l"><a href="#2380">2380 </a></span><span class="l"><a href="#2381">2381 </a></span><span class="l"><a href="#2382">2382 </a></span><span class="l"><a href="#2383">2383 </a></span><span class="l"><a href="#2384">2384 </a></span><span class="l"><a href="#2385">2385 </a></span><span class="l"><a href="#2386">2386 </a></span><span class="l"><a href="#2387">2387 </a></span><span class="l"><a href="#2388">2388 </a></span><span class="l"><a href="#2389">2389 </a></span><span class="l"><a href="#2390">2390 </a></span><span class="l"><a href="#2391">2391 </a></span><span class="l"><a href="#2392">2392 </a></span></span><span class="l"><a href="#2393">2393 </a></span></span><span class="l"><a href="#2394">2394 </a></span></span><span class="l"><a href="#2395">2395 </a></span></span><span class="l"><a href="#2396">2396 </a></span></span><span class="l"><a href="#2397">2397 </a></span></span><span class="l"><a href="#2398">2398 </a></span></span><span class="l"><a href="#2399">2399 </a></span></span><span class="l"><a href="#2400">2400 </a></span></span><span class="l"><a href="#2401">2401 </a></span><span class="l"><a href="#2402">2402 </a></span><span class="l"><a href="#2403">2403 </a></span><span class="l"><a href="#2404">2404 </a></span><span class="l"><a href="#2405">2405 </a></span><span class="l"><a href="#2406">2406 </a></span><span class="l"><a href="#2407">2407 </a></span><span class="l"><a href="#2408">2408 </a></span><span class="l"><a href="#2409">2409 </a></span><span class="l"><a href="#2410">2410 </a></span><span class="l"><a href="#2411">2411 </a></span><span class="l"><a href="#2412">2412 </a></span><span class="l"><a href="#2413">2413 </a></span><span class="l"><a href="#2414">2414 </a></span><span class="l"><a href="#2415">2415 </a></span><span class="l"><a href="#2416">2416 </a></span><span class="l"><a href="#2417">2417 </a></span><span class="l"><a href="#2418">2418 </a></span><span class="l"><a href="#2419">2419 </a></span><span class="l"><a href="#2420">2420 </a></span><span class="l"><a href="#2421">2421 </a></span><span class="l"><a href="#2422">2422 </a></span><span class="l"><a href="#2423">2423 </a></span></span><span class="l"><a href="#2424">2424 </a></span></span><span class="l"><a href="#2425">2425 </a></span></span><span class="l"><a href="#2426">2426 </a></span></span><span class="l"><a href="#2427">2427 </a></span></span><span class="l"><a href="#2428">2428 </a></span></span><span class="l"><a href="#2429">2429 </a></span></span><span class="l"><a href="#2430">2430 </a></span></span><span class="l"><a href="#2431">2431 </a></span></span><span class="l"><a href="#2432">2432 </a></span></span><span class="l"><a href="#2433">2433 </a></span></span><span class="l"><a href="#2434">2434 </a></span><span class="l"><a href="#2435">2435 </a></span><span class="l"><a href="#2436">2436 </a></span><span class="l"><a href="#2437">2437 </a></span><span class="l"><a href="#2438">2438 </a></span><span class="l"><a href="#2439">2439 </a></span><span class="l"><a href="#2440">2440 </a></span><span class="l"><a href="#2441">2441 </a></span><span class="l"><a href="#2442">2442 </a></span><span class="l"><a href="#2443">2443 </a></span><span class="l"><a href="#2444">2444 </a></span><span class="l"><a href="#2445">2445 </a></span><span class="l"><a href="#2446">2446 </a></span><span class="l"><a href="#2447">2447 </a></span><span class="l"><a href="#2448">2448 </a></span><span class="l"><a href="#2449">2449 </a></span><span class="l"><a href="#2450">2450 </a></span><span class="l"><a href="#2451">2451 </a></span><span class="l"><a href="#2452">2452 </a></span><span class="l"><a href="#2453">2453 </a></span><span class="l"><a href="#2454">2454 </a></span><span class="l"><a href="#2455">2455 </a></span><span class="l"><a href="#2456">2456 </a></span><span class="l"><a href="#2457">2457 </a></span><span class="l"><a href="#2458">2458 </a></span><span class="l"><a href="#2459">2459 </a></span><span class="l"><a href="#2460">2460 </a></span><span class="l"><a href="#2461">2461 </a></span><span class="l"><a href="#2462">2462 </a></span><span class="l"><a href="#2463">2463 </a></span><span class="l"><a href="#2464">2464 </a></span><span class="l"><a href="#2465">2465 </a></span><span class="l"><a href="#2466">2466 </a></span><span class="l"><a href="#2467">2467 </a></span><span class="l"><a href="#2468">2468 </a></span><span class="l"><a href="#2469">2469 </a></span><span class="l"><a href="#2470">2470 </a></span><span class="l"><a href="#2471">2471 </a></span><span class="l"><a href="#2472">2472 </a></span><span class="l"><a href="#2473">2473 </a></span><span class="l"><a href="#2474">2474 </a></span><span class="l"><a href="#2475">2475 </a></span><span class="l"><a href="#2476">2476 </a></span><span class="l"><a href="#2477">2477 </a></span><span class="l"><a href="#2478">2478 </a></span><span class="l"><a href="#2479">2479 </a></span><span class="l"><a href="#2480">2480 </a></span><span class="l"><a href="#2481">2481 </a></span><span class="l"><a href="#2482">2482 </a></span><span class="l"><a href="#2483">2483 </a></span><span class="l"><a href="#2484">2484 </a></span><span class="l"><a href="#2485">2485 </a></span><span class="l"><a href="#2486">2486 </a></span><span class="l"><a href="#2487">2487 </a></span></span><span class="l"><a href="#2488">2488 </a></span></span><span class="l"><a href="#2489">2489 </a></span></span><span class="l"><a href="#2490">2490 </a></span></span><span class="l"><a href="#2491">2491 </a></span></span><span class="l"><a href="#2492">2492 </a></span></span><span class="l"><a href="#2493">2493 </a></span><span class="l"><a href="#2494">2494 </a></span><span class="l"><a href="#2495">2495 </a></span><span class="l"><a href="#2496">2496 </a></span><span class="l"><a href="#2497">2497 </a></span><span class="l"><a href="#2498">2498 </a></span></span><span class="l"><a href="#2499">2499 </a></span></span><span class="l"><a href="#2500">2500 </a></span></span><span class="l"><a href="#2501">2501 </a></span></span><span class="l"><a href="#2502">2502 </a></span></span><span class="l"><a href="#2503">2503 </a></span></span><span class="l"><a href="#2504">2504 </a></span><span class="l"><a href="#2505">2505 </a></span><span class="l"><a href="#2506">2506 </a></span><span class="l"><a href="#2507">2507 </a></span><span class="l"><a href="#2508">2508 </a></span><span class="l"><a href="#2509">2509 </a></span><span class="l"><a href="#2510">2510 </a></span><span class="l"><a href="#2511">2511 </a></span><span class="l"><a href="#2512">2512 </a></span><span class="l"><a href="#2513">2513 </a></span><span class="l"><a href="#2514">2514 </a></span><span class="l"><a href="#2515">2515 </a></span><span class="l"><a href="#2516">2516 </a></span></span><span class="l"><a href="#2517">2517 </a></span></span><span class="l"><a href="#2518">2518 </a></span></span><span class="l"><a href="#2519">2519 </a></span></span><span class="l"><a href="#2520">2520 </a></span></span><span class="l"><a href="#2521">2521 </a></span></span><span class="l"><a href="#2522">2522 </a></span></span><span class="l"><a href="#2523">2523 </a></span></span><span class="l"><a href="#2524">2524 </a></span><span class="l"><a href="#2525">2525 </a></span><span class="l"><a href="#2526">2526 </a></span><span class="l"><a href="#2527">2527 </a></span><span class="l"><a href="#2528">2528 </a></span><span class="l"><a href="#2529">2529 </a></span><span class="l"><a href="#2530">2530 </a></span><span class="l"><a href="#2531">2531 </a></span><span class="l"><a href="#2532">2532 </a></span><span class="l"><a href="#2533">2533 </a></span><span class="l"><a href="#2534">2534 </a></span><span class="l"><a href="#2535">2535 </a></span><span class="l"><a href="#2536">2536 </a></span><span class="l"><a href="#2537">2537 </a></span><span class="l"><a href="#2538">2538 </a></span><span class="l"><a href="#2539">2539 </a></span><span class="l"><a href="#2540">2540 </a></span><span class="l"><a href="#2541">2541 </a></span><span class="l"><a href="#2542">2542 </a></span><span class="l"><a href="#2543">2543 </a></span><span class="l"><a href="#2544">2544 </a></span><span class="l"><a href="#2545">2545 </a></span><span class="l"><a href="#2546">2546 </a></span><span class="l"><a href="#2547">2547 </a></span><span class="l"><a href="#2548">2548 </a></span><span class="l"><a href="#2549">2549 </a></span><span class="l"><a href="#2550">2550 </a></span><span class="l"><a href="#2551">2551 </a></span><span class="l"><a href="#2552">2552 </a></span><span class="l"><a href="#2553">2553 </a></span><span class="l"><a href="#2554">2554 </a></span><span class="l"><a href="#2555">2555 </a></span><span class="l"><a href="#2556">2556 </a></span><span class="l"><a href="#2557">2557 </a></span><span class="l"><a href="#2558">2558 </a></span><span class="l"><a href="#2559">2559 </a></span><span class="l"><a href="#2560">2560 </a></span><span class="l"><a href="#2561">2561 </a></span><span class="l"><a href="#2562">2562 </a></span><span class="l"><a href="#2563">2563 </a></span><span class="l"><a href="#2564">2564 </a></span><span class="l"><a href="#2565">2565 </a></span><span class="l"><a href="#2566">2566 </a></span><span class="l"><a href="#2567">2567 </a></span><span class="l"><a href="#2568">2568 </a></span><span class="l"><a href="#2569">2569 </a></span><span class="l"><a href="#2570">2570 </a></span><span class="l"><a href="#2571">2571 </a></span><span class="l"><a href="#2572">2572 </a></span><span class="l"><a href="#2573">2573 </a></span><span class="l"><a href="#2574">2574 </a></span><span class="l"><a href="#2575">2575 </a></span><span class="l"><a href="#2576">2576 </a></span><span class="l"><a href="#2577">2577 </a></span><span class="l"><a href="#2578">2578 </a></span><span class="l"><a href="#2579">2579 </a></span><span class="l"><a href="#2580">2580 </a></span><span class="l"><a href="#2581">2581 </a></span><span class="l"><a href="#2582">2582 </a></span><span class="l"><a href="#2583">2583 </a></span><span class="l"><a href="#2584">2584 </a></span><span class="l"><a href="#2585">2585 </a></span><span class="l"><a href="#2586">2586 </a></span><span class="l"><a href="#2587">2587 </a></span><span class="l"><a href="#2588">2588 </a></span><span class="l"><a href="#2589">2589 </a></span><span class="l"><a href="#2590">2590 </a></span><span class="l"><a href="#2591">2591 </a></span><span class="l"><a href="#2592">2592 </a></span></span><span class="l"><a href="#2593">2593 </a></span></span><span class="l"><a href="#2594">2594 </a></span></span><span class="l"><a href="#2595">2595 </a></span></span><span class="l"><a href="#2596">2596 </a></span></span><span class="l"><a href="#2597">2597 </a></span></span><span class="l"><a href="#2598">2598 </a></span></span><span class="l"><a href="#2599">2599 </a></span></span><span class="l"><a href="#2600">2600 </a></span></span><span class="l"><a href="#2601">2601 </a></span></span><span class="l"><a href="#2602">2602 </a></span></span><span class="l"><a href="#2603">2603 </a></span></span><span class="l"><a href="#2604">2604 </a></span></span><span class="l"><a href="#2605">2605 </a></span></span><span class="l"><a href="#2606">2606 </a></span></span><span class="l"><a href="#2607">2607 </a></span></span><span class="l"><a href="#2608">2608 </a></span></span><span class="l"><a href="#2609">2609 </a></span></span><span class="l"><a href="#2610">2610 </a></span></span><span class="l"><a href="#2611">2611 </a></span></span><span class="l"><a href="#2612">2612 </a></span></span><span class="l"><a href="#2613">2613 </a></span><span class="l"><a href="#2614">2614 </a></span><span class="l"><a href="#2615">2615 </a></span><span class="l"><a href="#2616">2616 </a></span><span class="l"><a href="#2617">2617 </a></span><span class="l"><a href="#2618">2618 </a></span><span class="l"><a href="#2619">2619 </a></span><span class="l"><a href="#2620">2620 </a></span><span class="l"><a href="#2621">2621 </a></span><span class="l"><a href="#2622">2622 </a></span><span class="l"><a href="#2623">2623 </a></span><span class="l"><a href="#2624">2624 </a></span><span class="l"><a href="#2625">2625 </a></span><span class="l"><a href="#2626">2626 </a></span><span class="l"><a href="#2627">2627 </a></span><span class="l"><a href="#2628">2628 </a></span><span class="l"><a href="#2629">2629 </a></span><span class="l"><a href="#2630">2630 </a></span><span class="l"><a href="#2631">2631 </a></span><span class="l"><a href="#2632">2632 </a></span><span class="l"><a href="#2633">2633 </a></span><span class="l"><a href="#2634">2634 </a></span><span class="l"><a href="#2635">2635 </a></span><span class="l"><a href="#2636">2636 </a></span><span class="l"><a href="#2637">2637 </a></span><span class="l"><a href="#2638">2638 </a></span><span class="l"><a href="#2639">2639 </a></span><span class="l"><a href="#2640">2640 </a></span><span class="l"><a href="#2641">2641 </a></span><span class="l"><a href="#2642">2642 </a></span><span class="l"><a href="#2643">2643 </a></span><span class="l"><a href="#2644">2644 </a></span><span class="l"><a href="#2645">2645 </a></span><span class="l"><a href="#2646">2646 </a></span><span class="l"><a href="#2647">2647 </a></span><span class="l"><a href="#2648">2648 </a></span><span class="l"><a href="#2649">2649 </a></span><span class="l"><a href="#2650">2650 </a></span><span class="l"><a href="#2651">2651 </a></span><span class="l"><a href="#2652">2652 </a></span><span class="l"><a href="#2653">2653 </a></span><span class="l"><a href="#2654">2654 </a></span><span class="l"><a href="#2655">2655 </a></span><span class="l"><a href="#2656">2656 </a></span><span class="l"><a href="#2657">2657 </a></span><span class="l"><a href="#2658">2658 </a></span><span class="l"><a href="#2659">2659 </a></span><span class="l"><a href="#2660">2660 </a></span><span class="l"><a href="#2661">2661 </a></span><span class="l"><a href="#2662">2662 </a></span><span class="l"><a href="#2663">2663 </a></span><span class="l"><a href="#2664">2664 </a></span><span class="l"><a href="#2665">2665 </a></span><span class="l"><a href="#2666">2666 </a></span><span class="l"><a href="#2667">2667 </a></span><span class="l"><a href="#2668">2668 </a></span><span class="l"><a href="#2669">2669 </a></span><span class="l"><a href="#2670">2670 </a></span><span class="l"><a href="#2671">2671 </a></span><span class="l"><a href="#2672">2672 </a></span><span class="l"><a href="#2673">2673 </a></span><span class="l"><a href="#2674">2674 </a></span><span class="l"><a href="#2675">2675 </a></span><span class="l"><a href="#2676">2676 </a></span><span class="l"><a href="#2677">2677 </a></span><span class="l"><a href="#2678">2678 </a></span><span class="l"><a href="#2679">2679 </a></span><span class="l"><a href="#2680">2680 </a></span><span class="l"><a href="#2681">2681 </a></span><span class="l"><a href="#2682">2682 </a></span><span class="l"><a href="#2683">2683 </a></span><span class="l"><a href="#2684">2684 </a></span><span class="l"><a href="#2685">2685 </a></span><span class="l"><a href="#2686">2686 </a></span><span class="l"><a href="#2687">2687 </a></span><span class="l"><a href="#2688">2688 </a></span><span class="l"><a href="#2689">2689 </a></span><span class="l"><a href="#2690">2690 </a></span><span class="l"><a href="#2691">2691 </a></span><span class="l"><a href="#2692">2692 </a></span><span class="l"><a href="#2693">2693 </a></span><span class="l"><a href="#2694">2694 </a></span><span class="l"><a href="#2695">2695 </a></span><span class="l"><a href="#2696">2696 </a></span><span class="l"><a href="#2697">2697 </a></span><span class="l"><a href="#2698">2698 </a></span><span class="l"><a href="#2699">2699 </a></span><span class="l"><a href="#2700">2700 </a></span><span class="l"><a href="#2701">2701 </a></span><span class="l"><a href="#2702">2702 </a></span><span class="l"><a href="#2703">2703 </a></span><span class="l"><a href="#2704">2704 </a></span><span class="l"><a href="#2705">2705 </a></span><span class="l"><a href="#2706">2706 </a></span><span class="l"><a href="#2707">2707 </a></span><span class="l"><a href="#2708">2708 </a></span><span class="l"><a href="#2709">2709 </a></span><span class="l"><a href="#2710">2710 </a></span><span class="l"><a href="#2711">2711 </a></span><span class="l"><a href="#2712">2712 </a></span><span class="l"><a href="#2713">2713 </a></span><span class="l"><a href="#2714">2714 </a></span><span class="l"><a href="#2715">2715 </a></span><span class="l"><a href="#2716">2716 </a></span><span class="l"><a href="#2717">2717 </a></span><span class="l"><a href="#2718">2718 </a></span><span class="l"><a href="#2719">2719 </a></span><span class="l"><a href="#2720">2720 </a></span><span class="l"><a href="#2721">2721 </a></span><span class="l"><a href="#2722">2722 </a></span><span class="l"><a href="#2723">2723 </a></span><span class="l"><a href="#2724">2724 </a></span><span class="l"><a href="#2725">2725 </a></span><span class="l"><a href="#2726">2726 </a></span><span class="l"><a href="#2727">2727 </a></span><span class="l"><a href="#2728">2728 </a></span><span class="l"><a href="#2729">2729 </a></span><span class="l"><a href="#2730">2730 </a></span><span class="l"><a href="#2731">2731 </a></span><span class="l"><a href="#2732">2732 </a></span><span class="l"><a href="#2733">2733 </a></span><span class="l"><a href="#2734">2734 </a></span><span class="l"><a href="#2735">2735 </a></span><span class="l"><a href="#2736">2736 </a></span><span class="l"><a href="#2737">2737 </a></span><span class="l"><a href="#2738">2738 </a></span><span class="l"><a href="#2739">2739 </a></span><span class="l"><a href="#2740">2740 </a></span><span class="l"><a href="#2741">2741 </a></span><span class="l"><a href="#2742">2742 </a></span><span class="l"><a href="#2743">2743 </a></span><span class="l"><a href="#2744">2744 </a></span><span class="l"><a href="#2745">2745 </a></span><span class="l"><a href="#2746">2746 </a></span><span class="l"><a href="#2747">2747 </a></span><span class="l"><a href="#2748">2748 </a></span><span class="l"><a href="#2749">2749 </a></span><span class="l"><a href="#2750">2750 </a></span><span class="l"><a href="#2751">2751 </a></span><span class="l"><a href="#2752">2752 </a></span><span class="l"><a href="#2753">2753 </a></span><span class="l"><a href="#2754">2754 </a></span><span class="l"><a href="#2755">2755 </a></span><span class="l"><a href="#2756">2756 </a></span><span class="l"><a href="#2757">2757 </a></span><span class="l"><a href="#2758">2758 </a></span><span class="l"><a href="#2759">2759 </a></span><span class="l"><a href="#2760">2760 </a></span><span class="l"><a href="#2761">2761 </a></span><span class="l"><a href="#2762">2762 </a></span><span class="l"><a href="#2763">2763 </a></span><span class="l"><a href="#2764">2764 </a></span><span class="l"><a href="#2765">2765 </a></span><span class="l"><a href="#2766">2766 </a></span><span class="l"><a href="#2767">2767 </a></span><span class="l"><a href="#2768">2768 </a></span><span class="l"><a href="#2769">2769 </a></span><span class="l"><a href="#2770">2770 </a></span><span class="l"><a href="#2771">2771 </a></span><span class="l"><a href="#2772">2772 </a></span><span class="l"><a href="#2773">2773 </a></span><span class="l"><a href="#2774">2774 </a></span><span class="l"><a href="#2775">2775 </a></span><span class="l"><a href="#2776">2776 </a></span><span class="l"><a href="#2777">2777 </a></span><span class="l"><a href="#2778">2778 </a></span><span class="l"><a href="#2779">2779 </a></span><span class="l"><a href="#2780">2780 </a></span><span class="l"><a href="#2781">2781 </a></span><span class="l"><a href="#2782">2782 </a></span><span class="l"><a href="#2783">2783 </a></span><span class="l"><a href="#2784">2784 </a></span><span class="l"><a href="#2785">2785 </a></span><span class="l"><a href="#2786">2786 </a></span><span class="l"><a href="#2787">2787 </a></span><span class="l"><a href="#2788">2788 </a></span><span class="l"><a href="#2789">2789 </a></span><span class="l"><a href="#2790">2790 </a></span><span class="l"><a href="#2791">2791 </a></span><span class="l"><a href="#2792">2792 </a></span><span class="l"><a href="#2793">2793 </a></span><span class="l"><a href="#2794">2794 </a></span><span class="l"><a href="#2795">2795 </a></span><span class="l"><a href="#2796">2796 </a></span><span class="l"><a href="#2797">2797 </a></span><span class="l"><a href="#2798">2798 </a></span><span class="l"><a href="#2799">2799 </a></span><span class="l"><a href="#2800">2800 </a></span><span class="l"><a href="#2801">2801 </a></span><span class="l"><a href="#2802">2802 </a></span><span class="l"><a href="#2803">2803 </a></span><span class="l"><a href="#2804">2804 </a></span><span class="l"><a href="#2805">2805 </a></span><span class="l"><a href="#2806">2806 </a></span><span class="l"><a href="#2807">2807 </a></span><span class="l"><a href="#2808">2808 </a></span><span class="l"><a href="#2809">2809 </a></span><span class="l"><a href="#2810">2810 </a></span><span class="l"><a href="#2811">2811 </a></span><span class="l"><a href="#2812">2812 </a></span><span class="l"><a href="#2813">2813 </a></span><span class="l"><a href="#2814">2814 </a></span><span class="l"><a href="#2815">2815 </a></span><span class="l"><a href="#2816">2816 </a></span><span class="l"><a href="#2817">2817 </a></span><span class="l"><a href="#2818">2818 </a></span><span class="l"><a href="#2819">2819 </a></span><span class="l"><a href="#2820">2820 </a></span><span class="l"><a href="#2821">2821 </a></span><span class="l"><a href="#2822">2822 </a></span><span class="l"><a href="#2823">2823 </a></span><span class="l"><a href="#2824">2824 </a></span><span class="l"><a href="#2825">2825 </a></span><span class="l"><a href="#2826">2826 </a></span><span class="l"><a href="#2827">2827 </a></span><span class="l"><a href="#2828">2828 </a></span><span class="l"><a href="#2829">2829 </a></span><span class="l"><a href="#2830">2830 </a></span><span class="l"><a href="#2831">2831 </a></span><span class="l"><a href="#2832">2832 </a></span><span class="l"><a href="#2833">2833 </a></span><span class="l"><a href="#2834">2834 </a></span><span class="l"><a href="#2835">2835 </a></span><span class="l"><a href="#2836">2836 </a></span><span class="l"><a href="#2837">2837 </a></span><span class="l"><a href="#2838">2838 </a></span><span class="l"><a href="#2839">2839 </a></span><span class="l"><a href="#2840">2840 </a></span><span class="l"><a href="#2841">2841 </a></span><span class="l"><a href="#2842">2842 </a></span><span class="l"><a href="#2843">2843 </a></span><span class="l"><a href="#2844">2844 </a></span><span class="l"><a href="#2845">2845 </a></span><span class="l"><a href="#2846">2846 </a></span><span class="l"><a href="#2847">2847 </a></span><span class="l"><a href="#2848">2848 </a></span><span class="l"><a href="#2849">2849 </a></span><span class="l"><a href="#2850">2850 </a></span><span class="l"><a href="#2851">2851 </a></span><span class="l"><a href="#2852">2852 </a></span><span class="l"><a href="#2853">2853 </a></span><span class="l"><a href="#2854">2854 </a></span><span class="l"><a href="#2855">2855 </a></span><span class="l"><a href="#2856">2856 </a></span><span class="l"><a href="#2857">2857 </a></span><span class="l"><a href="#2858">2858 </a></span><span class="l"><a href="#2859">2859 </a></span><span class="l"><a href="#2860">2860 </a></span><span class="l"><a href="#2861">2861 </a></span><span class="l"><a href="#2862">2862 </a></span><span class="l"><a href="#2863">2863 </a></span><span class="l"><a href="#2864">2864 </a></span><span class="l"><a href="#2865">2865 </a></span><span class="l"><a href="#2866">2866 </a></span><span class="l"><a href="#2867">2867 </a></span><span class="l"><a href="#2868">2868 </a></span><span class="l"><a href="#2869">2869 </a></span><span class="l"><a href="#2870">2870 </a></span><span class="l"><a href="#2871">2871 </a></span><span class="l"><a href="#2872">2872 </a></span><span class="l"><a href="#2873">2873 </a></span><span class="l"><a href="#2874">2874 </a></span><span class="l"><a href="#2875">2875 </a></span><span class="l"><a href="#2876">2876 </a></span><span class="l"><a href="#2877">2877 </a></span><span class="l"><a href="#2878">2878 </a></span><span class="l"><a href="#2879">2879 </a></span><span class="l"><a href="#2880">2880 </a></span><span class="l"><a href="#2881">2881 </a></span><span class="l"><a href="#2882">2882 </a></span><span class="l"><a href="#2883">2883 </a></span><span class="l"><a href="#2884">2884 </a></span><span class="l"><a href="#2885">2885 </a></span><span class="l"><a href="#2886">2886 </a></span><span class="l"><a href="#2887">2887 </a></span><span class="l"><a href="#2888">2888 </a></span><span class="l"><a href="#2889">2889 </a></span><span class="l"><a href="#2890">2890 </a></span><span class="l"><a href="#2891">2891 </a></span><span class="l"><a href="#2892">2892 </a></span><span class="l"><a href="#2893">2893 </a></span><span class="l"><a href="#2894">2894 </a></span><span class="l"><a href="#2895">2895 </a></span><span class="l"><a href="#2896">2896 </a></span><span class="l"><a href="#2897">2897 </a></span><span class="l"><a href="#2898">2898 </a></span><span class="l"><a href="#2899">2899 </a></span><span class="l"><a href="#2900">2900 </a></span><span class="l"><a href="#2901">2901 </a></span><span class="l"><a href="#2902">2902 </a></span><span class="l"><a href="#2903">2903 </a></span><span class="l"><a href="#2904">2904 </a></span><span class="l"><a href="#2905">2905 </a></span><span class="l"><a href="#2906">2906 </a></span><span class="l"><a href="#2907">2907 </a></span><span class="l"><a href="#2908">2908 </a></span><span class="l"><a href="#2909">2909 </a></span><span class="l"><a href="#2910">2910 </a></span><span class="l"><a href="#2911">2911 </a></span><span class="l"><a href="#2912">2912 </a></span><span class="l"><a href="#2913">2913 </a></span><span class="l"><a href="#2914">2914 </a></span><span class="l"><a href="#2915">2915 </a></span><span class="l"><a href="#2916">2916 </a></span><span class="l"><a href="#2917">2917 </a></span><span class="l"><a href="#2918">2918 </a></span><span class="l"><a href="#2919">2919 </a></span><span class="l"><a href="#2920">2920 </a></span><span class="l"><a href="#2921">2921 </a></span><span class="l"><a href="#2922">2922 </a></span><span class="l"><a href="#2923">2923 </a></span><span class="l"><a href="#2924">2924 </a></span><span class="l"><a href="#2925">2925 </a></span><span class="l"><a href="#2926">2926 </a></span><span class="l"><a href="#2927">2927 </a></span><span class="l"><a href="#2928">2928 </a></span><span class="l"><a href="#2929">2929 </a></span><span class="l"><a href="#2930">2930 </a></span><span class="l"><a href="#2931">2931 </a></span><span class="l"><a href="#2932">2932 </a></span><span class="l"><a href="#2933">2933 </a></span><span class="l"><a href="#2934">2934 </a></span><span class="l"><a href="#2935">2935 </a></span><span class="l"><a href="#2936">2936 </a></span><span class="l"><a href="#2937">2937 </a></span><span class="l"><a href="#2938">2938 </a></span><span class="l"><a href="#2939">2939 </a></span><span class="l"><a href="#2940">2940 </a></span><span class="l"><a href="#2941">2941 </a></span><span class="l"><a href="#2942">2942 </a></span><span class="l"><a href="#2943">2943 </a></span><span class="l"><a href="#2944">2944 </a></span><span class="l"><a href="#2945">2945 </a></span></span><span class="l"><a href="#2946">2946 </a></span></span><span class="l"><a href="#2947">2947 </a></span></span><span class="l"><a href="#2948">2948 </a></span><span class="l"><a href="#2949">2949 </a></span><span class="l"><a href="#2950">2950 </a></span><span class="l"><a href="#2951">2951 </a></span><span class="l"><a href="#2952">2952 </a></span><span class="l"><a href="#2953">2953 </a></span><span class="l"><a href="#2954">2954 </a></span><span class="l"><a href="#2955">2955 </a></span><span class="l"><a href="#2956">2956 </a></span><span class="l"><a href="#2957">2957 </a></span><span class="l"><a href="#2958">2958 </a></span><span class="l"><a href="#2959">2959 </a></span><span class="l"><a href="#2960">2960 </a></span><span class="l"><a href="#2961">2961 </a></span><span class="l"><a href="#2962">2962 </a></span><span class="l"><a href="#2963">2963 </a></span><span class="l"><a href="#2964">2964 </a></span><span class="l"><a href="#2965">2965 </a></span><span class="l"><a href="#2966">2966 </a></span><span class="l"><a href="#2967">2967 </a></span><span class="l"><a href="#2968">2968 </a></span><span class="l"><a href="#2969">2969 </a></span><span class="l"><a href="#2970">2970 </a></span><span class="l"><a href="#2971">2971 </a></span><span class="l"><a href="#2972">2972 </a></span><span class="l"><a href="#2973">2973 </a></span><span class="l"><a href="#2974">2974 </a></span><span class="l"><a href="#2975">2975 </a></span><span class="l"><a href="#2976">2976 </a></span><span class="l"><a href="#2977">2977 </a></span><span class="l"><a href="#2978">2978 </a></span><span class="l"><a href="#2979">2979 </a></span><span class="l"><a href="#2980">2980 </a></span><span class="l"><a href="#2981">2981 </a></span><span class="l"><a href="#2982">2982 </a></span><span class="l"><a href="#2983">2983 </a></span><span class="l"><a href="#2984">2984 </a></span><span class="l"><a href="#2985">2985 </a></span><span class="l"><a href="#2986">2986 </a></span><span class="l"><a href="#2987">2987 </a></span><span class="l"><a href="#2988">2988 </a></span><span class="l"><a href="#2989">2989 </a></span><span class="l"><a href="#2990">2990 </a></span><span class="l"><a href="#2991">2991 </a></span><span class="l"><a href="#2992">2992 </a></span><span class="l"><a href="#2993">2993 </a></span><span class="l"><a href="#2994">2994 </a></span><span class="l"><a href="#2995">2995 </a></span><span class="l"><a href="#2996">2996 </a></span><span class="l"><a href="#2997">2997 </a></span><span class="l"><a href="#2998">2998 </a></span><span class="l"><a href="#2999">2999 </a></span><span class="l"><a href="#3000">3000 </a></span><span class="l"><a href="#3001">3001 </a></span><span class="l"><a href="#3002">3002 </a></span><span class="l"><a href="#3003">3003 </a></span><span class="l"><a href="#3004">3004 </a></span><span class="l"><a href="#3005">3005 </a></span><span class="l"><a href="#3006">3006 </a></span><span class="l"><a href="#3007">3007 </a></span><span class="l"><a href="#3008">3008 </a></span><span class="l"><a href="#3009">3009 </a></span><span class="l"><a href="#3010">3010 </a></span><span class="l"><a href="#3011">3011 </a></span><span class="l"><a href="#3012">3012 </a></span><span class="l"><a href="#3013">3013 </a></span><span class="l"><a href="#3014">3014 </a></span><span class="l"><a href="#3015">3015 </a></span><span class="l"><a href="#3016">3016 </a></span><span class="l"><a href="#3017">3017 </a></span><span class="l"><a href="#3018">3018 </a></span><span class="l"><a href="#3019">3019 </a></span><span class="l"><a href="#3020">3020 </a></span><span class="l"><a href="#3021">3021 </a></span><span class="l"><a href="#3022">3022 </a></span><span class="l"><a href="#3023">3023 </a></span><span class="l"><a href="#3024">3024 </a></span><span class="l"><a href="#3025">3025 </a></span><span class="l"><a href="#3026">3026 </a></span><span class="l"><a href="#3027">3027 </a></span><span class="l"><a href="#3028">3028 </a></span><span class="l"><a href="#3029">3029 </a></span><span class="l"><a href="#3030">3030 </a></span><span class="l"><a href="#3031">3031 </a></span><span class="l"><a href="#3032">3032 </a></span><span class="l"><a href="#3033">3033 </a></span><span class="l"><a href="#3034">3034 </a></span><span class="l"><a href="#3035">3035 </a></span><span class="l"><a href="#3036">3036 </a></span><span class="l"><a href="#3037">3037 </a></span><span class="l"><a href="#3038">3038 </a></span><span class="l"><a href="#3039">3039 </a></span><span class="l"><a href="#3040">3040 </a></span><span class="l"><a href="#3041">3041 </a></span><span class="l"><a href="#3042">3042 </a></span><span class="l"><a href="#3043">3043 </a></span><span class="l"><a href="#3044">3044 </a></span><span class="l"><a href="#3045">3045 </a></span><span class="l"><a href="#3046">3046 </a></span><span class="l"><a href="#3047">3047 </a></span><span class="l"><a href="#3048">3048 </a></span><span class="l"><a href="#3049">3049 </a></span><span class="l"><a href="#3050">3050 </a></span><span class="l"><a href="#3051">3051 </a></span><span class="l"><a href="#3052">3052 </a></span><span class="l"><a href="#3053">3053 </a></span><span class="l"><a href="#3054">3054 </a></span><span class="l"><a href="#3055">3055 </a></span><span class="l"><a href="#3056">3056 </a></span><span class="l"><a href="#3057">3057 </a></span></span><span class="l"><a href="#3058">3058 </a></span></span><span class="l"><a href="#3059">3059 </a></span></span><span class="l"><a href="#3060">3060 </a></span><span class="l"><a href="#3061">3061 </a></span><span class="l"><a href="#3062">3062 </a></span><span class="l"><a href="#3063">3063 </a></span><span class="l"><a href="#3064">3064 </a></span><span class="l"><a href="#3065">3065 </a></span><span class="l"><a href="#3066">3066 </a></span><span class="l"><a href="#3067">3067 </a></span><span class="l"><a href="#3068">3068 </a></span><span class="l"><a href="#3069">3069 </a></span><span class="l"><a href="#3070">3070 </a></span><span class="l"><a href="#3071">3071 </a></span><span class="l"><a href="#3072">3072 </a></span><span class="l"><a href="#3073">3073 </a></span><span class="l"><a href="#3074">3074 </a></span><span class="l"><a href="#3075">3075 </a></span><span class="l"><a href="#3076">3076 </a></span><span class="l"><a href="#3077">3077 </a></span></span><span class="l"><a href="#3078">3078 </a></span></span><span class="l"><a href="#3079">3079 </a></span></span><span class="l"><a href="#3080">3080 </a></span></span><span class="l"><a href="#3081">3081 </a></span><span class="l"><a href="#3082">3082 </a></span><span class="l"><a href="#3083">3083 </a></span><span class="l"><a href="#3084">3084 </a></span><span class="l"><a href="#3085">3085 </a></span><span class="l"><a href="#3086">3086 </a></span><span class="l"><a href="#3087">3087 </a></span><span class="l"><a href="#3088">3088 </a></span><span class="l"><a href="#3089">3089 </a></span><span class="l"><a href="#3090">3090 </a></span></span><span class="l"><a href="#3091">3091 </a></span></span><span class="l"><a href="#3092">3092 </a></span></span><span class="l"><a href="#3093">3093 </a></span></span><span class="l"><a href="#3094">3094 </a></span></span><span class="l"><a href="#3095">3095 </a></span></span><span class="l"><a href="#3096">3096 </a></span><span class="l"><a href="#3097">3097 </a></span><span class="l"><a href="#3098">3098 </a></span><span class="l"><a href="#3099">3099 </a></span><span class="l"><a href="#3100">3100 </a></span><span class="l"><a href="#3101">3101 </a></span><span class="l"><a href="#3102">3102 </a></span><span class="l"><a href="#3103">3103 </a></span><span class="l"><a href="#3104">3104 </a></span><span class="l"><a href="#3105">3105 </a></span><span class="l"><a href="#3106">3106 </a></span><span class="l"><a href="#3107">3107 </a></span><span class="l"><a href="#3108">3108 </a></span><span class="l"><a href="#3109">3109 </a></span><span class="l"><a href="#3110">3110 </a></span><span class="l"><a href="#3111">3111 </a></span><span class="l"><a href="#3112">3112 </a></span><span class="l"><a href="#3113">3113 </a></span><span class="l"><a href="#3114">3114 </a></span></span><span class="l"><a href="#3115">3115 </a></span></span><span class="l"><a href="#3116">3116 </a></span></span><span class="l"><a href="#3117">3117 </a></span></span><span class="l"><a href="#3118">3118 </a></span></span><span class="l"><a href="#3119">3119 </a></span></span><span class="l"><a href="#3120">3120 </a></span><span class="l"><a href="#3121">3121 </a></span><span class="l"><a href="#3122">3122 </a></span><span class="l"><a href="#3123">3123 </a></span><span class="l"><a href="#3124">3124 </a></span><span class="l"><a href="#3125">3125 </a></span><span class="l"><a href="#3126">3126 </a></span><span class="l"><a href="#3127">3127 </a></span><span class="l"><a href="#3128">3128 </a></span><span class="l"><a href="#3129">3129 </a></span></span><span class="l"><a href="#3130">3130 </a></span></span><span class="l"><a href="#3131">3131 </a></span></span><span class="l"><a href="#3132">3132 </a></span></span><span class="l"><a href="#3133">3133 </a></span></span><span class="l"><a href="#3134">3134 </a></span></span><span class="l"><a href="#3135">3135 </a></span></span><span class="l"><a href="#3136">3136 </a></span><span class="l"><a href="#3137">3137 </a></span><span class="l"><a href="#3138">3138 </a></span><span class="l"><a href="#3139">3139 </a></span><span class="l"><a href="#3140">3140 </a></span><span class="l"><a href="#3141">3141 </a></span><span class="l"><a href="#3142">3142 </a></span><span class="l"><a href="#3143">3143 </a></span><span class="l"><a href="#3144">3144 </a></span><span class="l"><a href="#3145">3145 </a></span><span class="l"><a href="#3146">3146 </a></span><span class="l"><a href="#3147">3147 </a></span><span class="l"><a href="#3148">3148 </a></span><span class="l"><a href="#3149">3149 </a></span><span class="l"><a href="#3150">3150 </a></span><span class="l"><a href="#3151">3151 </a></span><span class="l"><a href="#3152">3152 </a></span><span class="l"><a href="#3153">3153 </a></span><span class="l"><a href="#3154">3154 </a></span><span class="l"><a href="#3155">3155 </a></span><span class="l"><a href="#3156">3156 </a></span><span class="l"><a href="#3157">3157 </a></span><span class="l"><a href="#3158">3158 </a></span><span class="l"><a href="#3159">3159 </a></span><span class="l"><a href="#3160">3160 </a></span></span><span class="l"><a href="#3161">3161 </a></span></span><span class="l"><a href="#3162">3162 </a></span></span><span class="l"><a href="#3163">3163 </a></span></span><span class="l"><a href="#3164">3164 </a></span><span class="l"><a href="#3165">3165 </a></span><span class="l"><a href="#3166">3166 </a></span><span class="l"><a href="#3167">3167 </a></span><span class="l"><a href="#3168">3168 </a></span><span class="l"><a href="#3169">3169 </a></span><span class="l"><a href="#3170">3170 </a></span></span><span class="l"><a href="#3171">3171 </a></span></span><span class="l"><a href="#3172">3172 </a></span></span><span class="l"><a href="#3173">3173 </a></span></span><span class="l"><a href="#3174">3174 </a></span><span class="l"><a href="#3175">3175 </a></span><span class="l"><a href="#3176">3176 </a></span><span class="l"><a href="#3177">3177 </a></span><span class="l"><a href="#3178">3178 </a></span><span class="l"><a href="#3179">3179 </a></span><span class="l"><a href="#3180">3180 </a></span></span><span class="l"><a href="#3181">3181 </a></span></span><span class="l"><a href="#3182">3182 </a></span></span><span class="l"><a href="#3183">3183 </a></span></span><span class="l"><a href="#3184">3184 </a></span><span class="l"><a href="#3185">3185 </a></span><span class="l"><a href="#3186">3186 </a></span><span class="l"><a href="#3187">3187 </a></span><span class="l"><a href="#3188">3188 </a></span><span class="l"><a href="#3189">3189 </a></span><span class="l"><a href="#3190">3190 </a></span></span><span class="l"><a href="#3191">3191 </a></span></span><span class="l"><a href="#3192">3192 </a></span></span><span class="l"><a href="#3193">3193 </a></span></span><span class="l"><a href="#3194">3194 </a></span><span class="l"><a href="#3195">3195 </a></span><span class="l"><a href="#3196">3196 </a></span><span class="l"><a href="#3197">3197 </a></span><span class="l"><a href="#3198">3198 </a></span><span class="l"><a href="#3199">3199 </a></span><span class="l"><a href="#3200">3200 </a></span><span class="l"><a href="#3201">3201 </a></span><span class="l"><a href="#3202">3202 </a></span><span class="l"><a href="#3203">3203 </a></span><span class="l"><a href="#3204">3204 </a></span><span class="l"><a href="#3205">3205 </a></span><span class="l"><a href="#3206">3206 </a></span><span class="l"><a href="#3207">3207 </a></span><span class="l"><a href="#3208">3208 </a></span><span class="l"><a href="#3209">3209 </a></span><span class="l"><a href="#3210">3210 </a></span><span class="l"><a href="#3211">3211 </a></span><span class="l"><a href="#3212">3212 </a></span><span class="l"><a href="#3213">3213 </a></span><span class="l"><a href="#3214">3214 </a></span><span class="l"><a href="#3215">3215 </a></span><span class="l"><a href="#3216">3216 </a></span><span class="l"><a href="#3217">3217 </a></span></code></pre>
	<pre class="code"><code><span id="1" class="l"><span class="xlang">&lt;?php</span>
</span><span id="2" class="l"><span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="3" class="l"><span class="php-comment">/**
</span></span><span id="4" class="l"><span class="php-comment"> *  An extremely fast web scraper that parses megabytes of HTML in a blink of an eye.
</span></span><span id="5" class="l"><span class="php-comment"> *  PHP5+, no dependencies.
</span></span><span id="6" class="l"><span class="php-comment"> *
</span></span><span id="7" class="l"><span class="php-comment"> *  PHP 5+ classes:
</span></span><span id="8" class="l"><span class="php-comment"> *     hQuery
</span></span><span id="9" class="l"><span class="php-comment"> *     hQuery_Element
</span></span><span id="10" class="l"><span class="php-comment"> *     hQuery_Node
</span></span><span id="11" class="l"><span class="php-comment"> *
</span></span><span id="12" class="l"><span class="php-comment"> *  PHP 5.3+ classes:
</span></span><span id="13" class="l"><span class="php-comment"> *     duzun\hQuery
</span></span><span id="14" class="l"><span class="php-comment"> *     duzun\hQuery\Element
</span></span><span id="15" class="l"><span class="php-comment"> *     duzun\hQuery\Node
</span></span><span id="16" class="l"><span class="php-comment"> *
</span></span><span id="17" class="l"><span class="php-comment"> *
</span></span><span id="18" class="l"><span class="php-comment"> *  API Documentation at https://duzun.github.io/hQuery.php
</span></span><span id="19" class="l"><span class="php-comment"> *
</span></span><span id="20" class="l"><span class="php-comment"> *  Copyright (C) 2014-2015 Dumitru Uzun
</span></span><span id="21" class="l"><span class="php-comment"> *
</span></span><span id="22" class="l"><span class="php-comment"> *  @author Dumitru Uzun (DUzun.ME)
</span></span><span id="23" class="l"><span class="php-comment"> *  @license MIT
</span></span><span id="24" class="l"><span class="php-comment"> *  @version 1.6.1
</span></span><span id="25" class="l"><span class="php-comment"> */</span>
</span><span id="26" class="l"><span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="27" class="l">
</span><span id="28" class="l"><span class="php-comment">/**
</span></span><span id="29" class="l"><span class="php-comment"> *  Base class for HTML Elements and Documents.
</span></span><span id="30" class="l"><span class="php-comment"> *
</span></span><span id="31" class="l"><span class="php-comment"> *  used internally
</span></span><span id="32" class="l"><span class="php-comment"> */</span>
</span><span id="33" class="l"><span class="php-keyword1">abstract</span> <span class="php-keyword1">class</span> hQuery_Node <span class="php-keyword1">implements</span> Iterator, Countable {
</span><span id="34" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="35" class="l">    <span class="php-keyword1">const</span> VERSION = <span class="php-quote">'1.6.1'</span>;
</span><span id="36" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="37" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-var">$last_http_result</span>; <span class="php-comment">// Response details of last request</span>
</span><span id="38" class="l">
</span><span id="39" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="40" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-var">$selected_doc</span> = <span class="php-keyword1">NULL</span>;
</span><span id="41" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="42" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$_prop</span>; <span class="php-comment">// Properties</span>
</span><span id="43" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$doc</span>; <span class="php-comment">// Parent doc</span>
</span><span id="44" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$ids</span>; <span class="php-comment">// contained elements' IDs</span>
</span><span id="45" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$exc</span>; <span class="php-comment">// excluded elements' IDs</span>
</span><span id="46" class="l">
</span><span id="47" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="48" class="l">    <span class="php-keyword1">public</span> <span class="php-var">$tag_map</span>; <span class="php-comment">// map tag names (eg ['b' =&gt; 'string'])</span>
</span><span id="49" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="50" class="l">    <span class="php-keyword1">static</span> <span class="php-var">$_ar_</span> = <span class="php-keyword1">array</span>()     ;
</span><span id="51" class="l">    <span class="php-keyword1">static</span> <span class="php-var">$_mi_</span> = PHP_INT_MAX ;
</span><span id="52" class="l">    <span class="php-keyword1">static</span> <span class="php-var">$_nl_</span> = <span class="php-keyword1">NULL</span>        ;
</span><span id="53" class="l">    <span class="php-keyword1">static</span> <span class="php-var">$_fl_</span> = <span class="php-keyword1">false</span>       ;
</span><span id="54" class="l">    <span class="php-keyword1">static</span> <span class="php-var">$_tr_</span> = <span class="php-keyword1">true</span>        ;
</span><span id="55" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="56" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> __construct(<span class="php-var">$doc</span>, <span class="php-var">$ids</span>, <span class="php-var">$is_ctx</span>=<span class="php-keyword1">false</span>) {
</span><span id="57" class="l">        <span class="php-var">$this</span>-&gt;doc = <span class="php-var">$doc</span>;
</span><span id="58" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">is_int</span>(<span class="php-var">$ids</span>)) <span class="php-var">$ids</span> = <span class="php-keyword1">array</span>(<span class="php-var">$ids</span> =&gt; <span class="php-var">$doc</span>-&gt;ids[<span class="php-var">$ids</span>]);
</span><span id="59" class="l">        <span class="php-var">$this</span>-&gt;ids = <span class="php-var">$is_ctx</span> ? <span class="php-var">$this</span>-&gt;_ctx_ids(<span class="php-var">$ids</span>) : <span class="php-var">$ids</span>;
</span><span id="60" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$doc</span> === <span class="php-var">$this</span>) { <span class="php-comment">// documents have no $doc property</span>
</span><span id="61" class="l">            <span class="php-keyword1">unset</span>(<span class="php-var">$this</span>-&gt;doc);
</span><span id="62" class="l">            self::<span class="php-var">$selected_doc</span> = <span class="php-var">$this</span>;
</span><span id="63" class="l">        }
</span><span id="64" class="l">    }
</span><span id="65" class="l">
</span><span id="66" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> __destruct() {
</span><span id="67" class="l">        <span class="php-keyword1">if</span>(self::<span class="php-var">$selected_doc</span> === <span class="php-var">$this</span>) self::<span class="php-var">$selected_doc</span> = self::<span class="php-var">$_nl_</span>;
</span><span id="68" class="l">        <span class="php-var">$this</span>-&gt;ids = self::<span class="php-var">$_nl_</span>; <span class="php-comment">// If any reference exists, destroy its contents! P.S. Might be buggy, but hey, I own this property. Sincerly yours, hQuery_Node class.</span>
</span><span id="69" class="l">        <span class="php-keyword1">unset</span>(<span class="php-var">$this</span>-&gt;doc, <span class="php-var">$this</span>-&gt;ids);
</span><span id="70" class="l">    }
</span><span id="71" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="72" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> attr(<span class="php-var">$attr</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$to_str</span>=<span class="php-keyword1">false</span>) {
</span><span id="73" class="l">        <span class="php-var">$k</span> = <span class="php-keyword2">key</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="74" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$k</span> === <span class="php-keyword1">NULL</span>) {
</span><span id="75" class="l">            <span class="php-keyword2">reset</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="76" class="l">            <span class="php-var">$k</span> = <span class="php-keyword2">key</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="77" class="l">        }
</span><span id="78" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword1">isset</span>(<span class="php-var">$k</span>) ? <span class="php-var">$this</span>-&gt;doc()-&gt;get_attr_byId(<span class="php-var">$k</span>, <span class="php-var">$attr</span>, <span class="php-var">$to_str</span>) : <span class="php-keyword1">NULL</span>;
</span><span id="79" class="l">    }
</span><span id="80" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="81" class="l">
</span><span id="82" class="l">    <span class="php-comment">// Deprecated</span>
</span><span id="83" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> is_empty() { <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;isEmpty() ;}
</span><span id="84" class="l">
</span><span id="85" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> isEmpty() {
</span><span id="86" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword1">empty</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="87" class="l">    }
</span><span id="88" class="l">
</span><span id="89" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> isDoc() {
</span><span id="90" class="l">        <span class="php-keyword1">return</span> !<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;doc) || <span class="php-var">$this</span> === <span class="php-var">$this</span>-&gt;doc;
</span><span id="91" class="l">    }
</span><span id="92" class="l">
</span><span id="93" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> doc() {
</span><span id="94" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;doc) ? <span class="php-var">$this</span>-&gt;doc : <span class="php-var">$this</span>;
</span><span id="95" class="l">    }
</span><span id="96" class="l">
</span><span id="97" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> find(<span class="php-var">$sel</span>, <span class="php-var">$attr</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="98" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;doc()-&gt;find(<span class="php-var">$sel</span>, <span class="php-var">$attr</span>, <span class="php-var">$this</span>);
</span><span id="99" class="l">    }
</span><span id="100" class="l">
</span><span id="101" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> exclude(<span class="php-var">$sel</span>, <span class="php-var">$attr</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="102" class="l">        <span class="php-var">$e</span> = <span class="php-var">$this</span>-&gt;find(<span class="php-var">$sel</span>, <span class="php-var">$attr</span>, <span class="php-var">$this</span>);
</span><span id="103" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$e</span>) {
</span><span id="104" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$this</span>-&gt;exc)) {
</span><span id="105" class="l">                <span class="php-var">$this</span>-&gt;exc = <span class="php-var">$e</span>-&gt;ids;
</span><span id="106" class="l">            }
</span><span id="107" class="l">            <span class="php-keyword1">else</span> {
</span><span id="108" class="l">                <span class="php-keyword1">foreach</span>(<span class="php-var">$e</span>-&gt;ids <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) <span class="php-var">$this</span>-&gt;exc[<span class="php-var">$b</span>] = <span class="php-var">$e</span>;
</span><span id="109" class="l">                <span class="php-keyword2">ksort</span>(<span class="php-var">$this</span>-&gt;exc);
</span><span id="110" class="l">            }
</span><span id="111" class="l">        }
</span><span id="112" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$e</span>;
</span><span id="113" class="l">    }
</span><span id="114" class="l">
</span><span id="115" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> __toString() {
</span><span id="116" class="l">        <span class="php-comment">// doc</span>
</span><span id="117" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$this</span>-&gt;isDoc()) <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;html;
</span><span id="118" class="l">
</span><span id="119" class="l">        <span class="php-var">$ret</span> = <span class="php-quote">''</span>;
</span><span id="120" class="l">        <span class="php-var">$doc</span> = <span class="php-var">$this</span>-&gt;doc;
</span><span id="121" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$this</span>-&gt;ids <span class="php-keyword1">as</span> <span class="php-var">$p</span> =&gt; <span class="php-var">$q</span>) {
</span><span id="122" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;exc, <span class="php-var">$this</span>-&gt;exc[<span class="php-var">$p</span>])) <span class="php-keyword1">continue</span>;
</span><span id="123" class="l">            ++<span class="php-var">$p</span>;
</span><span id="124" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$p</span> &lt; <span class="php-var">$q</span>) <span class="php-var">$ret</span> .= <span class="php-keyword2">substr</span>(<span class="php-var">$doc</span>-&gt;html, <span class="php-var">$p</span>, <span class="php-var">$q</span>-<span class="php-var">$p</span>);
</span><span id="125" class="l">        }
</span><span id="126" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="127" class="l">    }
</span><span id="128" class="l">
</span><span id="129" class="l">   <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="130" class="l">   <span class="php-comment">/**
</span></span><span id="131" class="l"><span class="php-comment">    * @return string .innerHTML
</span></span><span id="132" class="l"><span class="php-comment">    */</span>
</span><span id="133" class="l">   <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> html(<span class="php-var">$id</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="134" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$this</span>-&gt;isDoc()) <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;html; <span class="php-comment">// doc</span>
</span><span id="135" class="l">
</span><span id="136" class="l">      <span class="php-var">$id</span> = <span class="php-var">$this</span>-&gt;_my_ids(<span class="php-var">$id</span>);
</span><span id="137" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$id</span> === <span class="php-keyword1">false</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_fl_</span>;
</span><span id="138" class="l">      <span class="php-var">$doc</span> = <span class="php-var">$this</span>-&gt;doc;
</span><span id="139" class="l">      <span class="php-var">$ret</span> = self::<span class="php-var">$_nl_</span>;
</span><span id="140" class="l">      <span class="php-keyword1">foreach</span>(<span class="php-var">$id</span> <span class="php-keyword1">as</span> <span class="php-var">$p</span> =&gt; <span class="php-var">$q</span>) {
</span><span id="141" class="l">         <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;exc, <span class="php-var">$this</span>-&gt;exc[<span class="php-var">$p</span>])) <span class="php-keyword1">continue</span>;
</span><span id="142" class="l">         ++<span class="php-var">$p</span>;
</span><span id="143" class="l">         <span class="php-keyword1">if</span>(<span class="php-var">$p</span>&lt;<span class="php-var">$q</span>) <span class="php-var">$ret</span> .= <span class="php-keyword2">substr</span>(<span class="php-var">$doc</span>-&gt;html, <span class="php-var">$p</span>, <span class="php-var">$q</span>-<span class="php-var">$p</span>);
</span><span id="144" class="l">      }
</span><span id="145" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="146" class="l">   }
</span><span id="147" class="l">
</span><span id="148" class="l">   <span class="php-comment">/**
</span></span><span id="149" class="l"><span class="php-comment">    * @return string .outerHtml
</span></span><span id="150" class="l"><span class="php-comment">    */</span>
</span><span id="151" class="l">   <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> outerHtml(<span class="php-var">$id</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="152" class="l">      <span class="php-var">$dm</span> = <span class="php-var">$this</span>-&gt;isDoc() &amp;&amp; !<span class="php-keyword1">isset</span>(<span class="php-var">$id</span>);
</span><span id="153" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$dm</span>) <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;html; <span class="php-comment">// doc</span>
</span><span id="154" class="l">
</span><span id="155" class="l">      <span class="php-var">$id</span> = <span class="php-var">$this</span>-&gt;_my_ids(<span class="php-var">$id</span>);
</span><span id="156" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$id</span> === <span class="php-keyword1">false</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_fl_</span>;
</span><span id="157" class="l">      <span class="php-var">$doc</span> = <span class="php-var">$this</span>-&gt;doc();
</span><span id="158" class="l">      <span class="php-var">$ret</span> = self::<span class="php-var">$_nl_</span>;
</span><span id="159" class="l">      <span class="php-var">$map</span> = <span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;tag_map) ? <span class="php-var">$this</span>-&gt;tag_map : (<span class="php-keyword1">isset</span>(<span class="php-var">$doc</span>-&gt;tag_map) ? <span class="php-var">$doc</span>-&gt;tag_map : <span class="php-keyword1">NULL</span>);
</span><span id="160" class="l">      <span class="php-keyword1">foreach</span>(<span class="php-var">$id</span> <span class="php-keyword1">as</span> <span class="php-var">$p</span> =&gt; <span class="php-var">$q</span>) {
</span><span id="161" class="l">         <span class="php-var">$a</span> = <span class="php-var">$doc</span>-&gt;get_attr_byId(<span class="php-var">$p</span>, <span class="php-keyword1">NULL</span>, <span class="php-keyword1">true</span>);
</span><span id="162" class="l">         <span class="php-var">$n</span> = <span class="php-var">$doc</span>-&gt;tags[<span class="php-var">$p</span>];
</span><span id="163" class="l">         <span class="php-keyword1">if</span>(<span class="php-var">$map</span> &amp;&amp; <span class="php-keyword1">isset</span>(<span class="php-var">$map</span>[<span class="php-var">$_n</span>=<span class="php-keyword2">strtolower</span>(<span class="php-var">$n</span>)])) <span class="php-var">$n</span> = <span class="php-var">$map</span>[<span class="php-var">$_n</span>];
</span><span id="164" class="l">         <span class="php-var">$h</span> = <span class="php-var">$p</span>++ == <span class="php-var">$q</span> ? <span class="php-keyword1">false</span> : (<span class="php-var">$p</span>&lt;<span class="php-var">$q</span> ? <span class="php-keyword2">substr</span>(<span class="php-var">$doc</span>-&gt;html, <span class="php-var">$p</span>, <span class="php-var">$q</span>-<span class="php-var">$p</span>) : <span class="php-quote">''</span>);
</span><span id="165" class="l">         <span class="php-var">$ret</span> .= <span class="php-quote">'&lt;'</span>.<span class="php-var">$n</span>.(<span class="php-var">$a</span>?<span class="php-quote">' '</span>.<span class="php-var">$a</span>:<span class="php-quote">''</span>) . (<span class="php-var">$h</span> === <span class="php-keyword1">false</span> ? <span class="php-quote">' /&gt;'</span> : <span class="php-quote">'&gt;'</span> . <span class="php-var">$h</span> . <span class="php-quote">'&lt;/'</span>.<span class="php-var">$n</span>.<span class="php-quote">'&gt;'</span>);
</span><span id="166" class="l">      }
</span><span id="167" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="168" class="l">   }
</span><span id="169" class="l">
</span><span id="170" class="l">   <span class="php-comment">/**
</span></span><span id="171" class="l"><span class="php-comment">    * @return string .innerText
</span></span><span id="172" class="l"><span class="php-comment">    */</span>
</span><span id="173" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> text(<span class="php-var">$id</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="174" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword2">html_entity_decode</span>(<span class="php-keyword2">strip_tags</span>(<span class="php-var">$this</span>-&gt;html(<span class="php-var">$id</span>)), ENT_QUOTES);<span class="php-comment">/* ??? */</span>
</span><span id="175" class="l">    }
</span><span id="176" class="l">
</span><span id="177" class="l">    <span class="php-comment">/**
</span></span><span id="178" class="l"><span class="php-comment">     * @return string .nodeName
</span></span><span id="179" class="l"><span class="php-comment">     */</span>
</span><span id="180" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> nodeName(<span class="php-var">$caseFolding</span> = <span class="php-keyword1">NULL</span>, <span class="php-var">$id</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="181" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$caseFolding</span>)) <span class="php-var">$caseFolding</span> = hQuery_HTML_Parser::<span class="php-var">$case_folding</span>;
</span><span id="182" class="l">        <span class="php-var">$dm</span> = <span class="php-var">$this</span>-&gt;isDoc() &amp;&amp; !<span class="php-keyword1">isset</span>(<span class="php-var">$id</span>);
</span><span id="183" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$dm</span>) <span class="php-var">$ret</span> = <span class="php-keyword2">array_unique</span>(<span class="php-var">$this</span>-&gt;tags); <span class="php-comment">// doc</span>
</span><span id="184" class="l">        <span class="php-keyword1">else</span> {
</span><span id="185" class="l">            <span class="php-var">$id</span> = <span class="php-var">$this</span>-&gt;_my_ids(<span class="php-var">$id</span>, <span class="php-keyword1">true</span>);
</span><span id="186" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$id</span> === <span class="php-keyword1">false</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_fl_</span>;
</span><span id="187" class="l">            <span class="php-var">$ret</span> = self::array_select(<span class="php-var">$this</span>-&gt;doc()-&gt;tags, <span class="php-var">$id</span>);
</span><span id="188" class="l">        }
</span><span id="189" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$caseFolding</span>) {
</span><span id="190" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$ret</span> <span class="php-keyword1">as</span> &amp;<span class="php-var">$n</span>) <span class="php-var">$n</span> = <span class="php-keyword2">strtolower</span>(<span class="php-var">$n</span>);
</span><span id="191" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$dm</span>) <span class="php-var">$ret</span> = <span class="php-keyword2">array_unique</span>(<span class="php-var">$ret</span>);
</span><span id="192" class="l">        }
</span><span id="193" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword2">count</span>(<span class="php-var">$ret</span>) &lt;= <span class="php-num">1</span> ? <span class="php-keyword2">reset</span>(<span class="php-var">$ret</span>) : <span class="php-var">$ret</span>;
</span><span id="194" class="l">    }
</span><span id="195" class="l">
</span><span id="196" class="l">    <span class="php-comment">// public function firstChild() {</span>
</span><span id="197" class="l">        <span class="php-comment">// $doc = $this-&gt;doc();</span>
</span><span id="198" class="l">        <span class="php-comment">// $q = reset($this-&gt;ids);</span>
</span><span id="199" class="l">        <span class="php-comment">// $p = key($this-&gt;ids);</span>
</span><span id="200" class="l">        <span class="php-comment">// return new hQuery_Element($doc, array($p=&gt;$q));</span>
</span><span id="201" class="l">    <span class="php-comment">// }</span>
</span><span id="202" class="l">
</span><span id="203" class="l">    <span class="php-comment">// public function lastChild() {</span>
</span><span id="204" class="l">        <span class="php-comment">// $doc = $this-&gt;doc();</span>
</span><span id="205" class="l">        <span class="php-comment">// $q = end($this-&gt;ids);</span>
</span><span id="206" class="l">        <span class="php-comment">// $p = key($this-&gt;ids);</span>
</span><span id="207" class="l">        <span class="php-comment">// return new hQuery_Element($doc, array($p=&gt;$q));</span>
</span><span id="208" class="l">    <span class="php-comment">// }</span>
</span><span id="209" class="l">
</span><span id="210" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="211" class="l">    <span class="php-comment">/**
</span></span><span id="212" class="l"><span class="php-comment">     *  Get string offset of the first/current element
</span></span><span id="213" class="l"><span class="php-comment">     *  in the source HTML document.
</span></span><span id="214" class="l"><span class="php-comment">     *
</span></span><span id="215" class="l"><span class="php-comment">     *   &lt;div class=&quot;test&quot;&gt; Contents &lt;span&gt;of&lt;/span&gt; #test &lt;/div&gt;
</span></span><span id="216" class="l"><span class="php-comment">     *                    |
</span></span><span id="217" class="l"><span class="php-comment">     *                    pos()
</span></span><span id="218" class="l"><span class="php-comment">     *
</span></span><span id="219" class="l"><span class="php-comment">     * @param bool $restore - if true, restore internal pointer to previous position
</span></span><span id="220" class="l"><span class="php-comment">     *
</span></span><span id="221" class="l"><span class="php-comment">     * @return int
</span></span><span id="222" class="l"><span class="php-comment">     */</span>
</span><span id="223" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">pos</span>(<span class="php-var">$restore</span>=<span class="php-keyword1">true</span>) {
</span><span id="224" class="l">        <span class="php-var">$k</span> = <span class="php-keyword2">key</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="225" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$k</span> === <span class="php-keyword1">NULL</span>) {
</span><span id="226" class="l">            <span class="php-keyword2">reset</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="227" class="l">            <span class="php-var">$k</span> = <span class="php-keyword2">key</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="228" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$k</span> !== <span class="php-keyword1">NULL</span> &amp;&amp; <span class="php-var">$restore</span>) {
</span><span id="229" class="l">                <span class="php-keyword2">end</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="230" class="l">                <span class="php-keyword2">next</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="231" class="l">            }
</span><span id="232" class="l">        }
</span><span id="233" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$k</span>;
</span><span id="234" class="l">    }
</span><span id="235" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="236" class="l">    <span class="php-comment">/**
</span></span><span id="237" class="l"><span class="php-comment">     * Make a context array of ids (if x in $ids &amp;&amp; exists y in $ids such that x in y then del x from $ids)
</span></span><span id="238" class="l"><span class="php-comment">     *
</span></span><span id="239" class="l"><span class="php-comment">     * @return array ids
</span></span><span id="240" class="l"><span class="php-comment">     */</span>
</span><span id="241" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> _ctx_ids(<span class="php-var">$ids</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="242" class="l">        <span class="php-var">$m</span> = -<span class="php-num">1</span>;
</span><span id="243" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$ids</span>)) <span class="php-var">$ids</span> = <span class="php-var">$this</span>-&gt;ids;
</span><span id="244" class="l">        <span class="php-keyword1">elseif</span>(<span class="php-keyword2">is_int</span>(<span class="php-var">$ids</span>)) <span class="php-var">$ids</span> = <span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;ids[<span class="php-var">$ids</span>]) ? <span class="php-keyword1">array</span>(<span class="php-var">$ids</span> =&gt; <span class="php-var">$this</span>-&gt;ids[<span class="php-var">$ids</span>]) : self::<span class="php-var">$_fl_</span>;
</span><span id="245" class="l">        <span class="php-keyword1">else</span> {
</span><span id="246" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$ids</span> <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) {
</span><span id="247" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$b</span> &lt;= <span class="php-var">$m</span> || <span class="php-var">$b</span>+<span class="php-num">1</span> &gt;= <span class="php-var">$e</span>) <span class="php-keyword1">unset</span>(<span class="php-var">$ids</span>[<span class="php-var">$b</span>]);
</span><span id="248" class="l">                <span class="php-keyword1">else</span> <span class="php-var">$m</span> = <span class="php-var">$e</span>;
</span><span id="249" class="l">            }
</span><span id="250" class="l">        }
</span><span id="251" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ids</span>;
</span><span id="252" class="l">    }
</span><span id="253" class="l">
</span><span id="254" class="l">    <span class="php-comment">/**
</span></span><span id="255" class="l"><span class="php-comment">     * Get all ids from inside of this element
</span></span><span id="256" class="l"><span class="php-comment">     *
</span></span><span id="257" class="l"><span class="php-comment">     * @return array ids
</span></span><span id="258" class="l"><span class="php-comment">     */</span>
</span><span id="259" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> _sub_ids(<span class="php-var">$eq</span>=<span class="php-keyword1">false</span>) {
</span><span id="260" class="l">        <span class="php-var">$ret</span> = <span class="php-keyword1">array</span>();
</span><span id="261" class="l">        <span class="php-var">$ce</span>  = <span class="php-keyword2">reset</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="262" class="l">        <span class="php-var">$cb</span>  = <span class="php-keyword2">key</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="263" class="l">        <span class="php-var">$doc</span> = <span class="php-var">$this</span>-&gt;doc();
</span><span id="264" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$doc</span>-&gt;ids <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) {
</span><span id="265" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$b</span> &lt; <span class="php-var">$cb</span> || !<span class="php-var">$eq</span> &amp;&amp; <span class="php-var">$b</span> == <span class="php-var">$cb</span>) <span class="php-keyword1">continue</span>;
</span><span id="266" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$b</span> &lt; <span class="php-var">$ce</span>) {
</span><span id="267" class="l">                <span class="php-var">$ret</span>[<span class="php-var">$b</span>] = <span class="php-var">$e</span>;
</span><span id="268" class="l">            }
</span><span id="269" class="l">            <span class="php-keyword1">else</span> {
</span><span id="270" class="l">                <span class="php-var">$ce</span> = <span class="php-keyword2">next</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="271" class="l">                <span class="php-keyword1">if</span>(!<span class="php-var">$ce</span>) <span class="php-keyword1">break</span>; <span class="php-comment">// end of context</span>
</span><span id="272" class="l">                <span class="php-var">$cb</span> = <span class="php-keyword2">key</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="273" class="l">            }
</span><span id="274" class="l">        }
</span><span id="275" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="276" class="l">    }
</span><span id="277" class="l">
</span><span id="278" class="l">    <span class="php-comment">/**
</span></span><span id="279" class="l"><span class="php-comment">     * Get and Normalize ids of $el
</span></span><span id="280" class="l"><span class="php-comment">     *
</span></span><span id="281" class="l"><span class="php-comment">     * @return array ids
</span></span><span id="282" class="l"><span class="php-comment">     */</span>
</span><span id="283" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> _doc_ids(<span class="php-var">$el</span>, <span class="php-var">$force_array</span>=<span class="php-keyword1">true</span>) {
</span><span id="284" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$el</span> <span class="php-keyword1">instanceof</span> self) <span class="php-var">$el</span> = <span class="php-var">$el</span>-&gt;ids;
</span><span id="285" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$force_array</span>) {
</span><span id="286" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword2">is_int</span>(<span class="php-var">$el</span>)) <span class="php-var">$el</span> = <span class="php-keyword1">array</span>(<span class="php-var">$el</span>=&gt;<span class="php-var">$this</span>-&gt;doc()-&gt;ids[<span class="php-var">$el</span>]);
</span><span id="287" class="l">            <span class="php-keyword1">if</span>(!<span class="php-keyword2">is_array</span>(<span class="php-var">$el</span>)) <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(__CLASS__ . <span class="php-quote">'-&gt;'</span> . __FUNCTION__ . <span class="php-quote">': not Array!'</span>);
</span><span id="288" class="l">        }
</span><span id="289" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$el</span>;
</span><span id="290" class="l">    }
</span><span id="291" class="l">
</span><span id="292" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> _my_ids(<span class="php-var">$id</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$keys</span>=<span class="php-keyword1">false</span>) {
</span><span id="293" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$id</span>)) <span class="php-var">$id</span> = <span class="php-var">$this</span>-&gt;ids;
</span><span id="294" class="l">        <span class="php-keyword1">elseif</span>(<span class="php-keyword2">is_int</span>(<span class="php-var">$id</span>)) {
</span><span id="295" class="l">            <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;ids[<span class="php-var">$id</span>])) <span class="php-keyword1">return</span> self::<span class="php-var">$_fl_</span>;
</span><span id="296" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$keys</span>) <span class="php-keyword1">return</span> <span class="php-var">$id</span>;
</span><span id="297" class="l">            <span class="php-var">$id</span> = <span class="php-keyword1">array</span>(<span class="php-var">$id</span> =&gt; <span class="php-var">$this</span>-&gt;ids[<span class="php-var">$id</span>]);
</span><span id="298" class="l">        }
</span><span id="299" class="l">        <span class="php-keyword1">elseif</span>(!<span class="php-var">$id</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_fl_</span>;
</span><span id="300" class="l">        <span class="php-keyword1">else</span> <span class="php-keyword2">ksort</span>(<span class="php-var">$id</span>);
</span><span id="301" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$keys</span> ? <span class="php-keyword2">array_keys</span>(<span class="php-var">$id</span>) : <span class="php-var">$id</span>;
</span><span id="302" class="l">    }
</span><span id="303" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="304" class="l">    <span class="php-keyword1">function</span> _parent(<span class="php-var">$ids</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$n</span>=<span class="php-num">0</span>) {
</span><span id="305" class="l">        <span class="php-var">$ret</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="306" class="l">        <span class="php-var">$ids</span> = <span class="php-var">$this</span>-&gt;_my_ids(<span class="php-var">$ids</span>);
</span><span id="307" class="l">        <span class="php-keyword1">if</span>(!<span class="php-var">$ids</span>) <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="308" class="l">
</span><span id="309" class="l">        <span class="php-var">$lb</span> = <span class="php-var">$le</span> = -<span class="php-num">1</span>;    <span class="php-comment">// last parent</span>
</span><span id="310" class="l">        <span class="php-var">$ie</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$ids</span>); <span class="php-comment">// current child</span>
</span><span id="311" class="l">        <span class="php-var">$ib</span> = <span class="php-keyword2">key</span>(<span class="php-var">$ids</span>);
</span><span id="312" class="l">        <span class="php-var">$dids</span> = &amp;<span class="php-var">$this</span>-&gt;doc()-&gt;ids;
</span><span id="313" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$dids</span> <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) { <span class="php-comment">// $b &lt; $ib &lt; $e</span>
</span><span id="314" class="l">            <span class="php-comment">// if current element is past current child and last parent is parent for current child</span>
</span><span id="315" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$ib</span> &lt;= <span class="php-var">$b</span>) {
</span><span id="316" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$ib</span> &lt; <span class="php-var">$le</span> &amp;&amp; <span class="php-var">$lb</span> &lt; <span class="php-var">$ib</span>) {
</span><span id="317" class="l">                    <span class="php-var">$ret</span>[<span class="php-var">$lb</span>] = <span class="php-var">$le</span>;
</span><span id="318" class="l">                }
</span><span id="319" class="l">                <span class="php-comment">// while current element is past current child</span>
</span><span id="320" class="l">                <span class="php-keyword1">do</span> {
</span><span id="321" class="l">                    <span class="php-var">$ie</span> = <span class="php-keyword2">next</span>(<span class="php-var">$ids</span>);
</span><span id="322" class="l">                    <span class="php-keyword1">if</span>(<span class="php-var">$ie</span> === <span class="php-keyword1">false</span>) { <span class="php-var">$ib</span> = -<span class="php-num">1</span>; <span class="php-keyword1">break</span> <span class="php-num">2</span>; }
</span><span id="323" class="l">                    <span class="php-var">$ib</span> = <span class="php-keyword2">key</span>(<span class="php-var">$ids</span>);
</span><span id="324" class="l">                } <span class="php-keyword1">while</span>(<span class="php-var">$ib</span> &lt;= <span class="php-var">$b</span>);
</span><span id="325" class="l">            }
</span><span id="326" class="l">            <span class="php-comment">// here $b &lt; $ib</span>
</span><span id="327" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$ib</span> &lt; <span class="php-var">$e</span>) { <span class="php-comment">// [$b=&gt;$e] is a parent of $ib</span>
</span><span id="328" class="l">                <span class="php-var">$lb</span> = <span class="php-var">$b</span>;
</span><span id="329" class="l">                <span class="php-var">$le</span> = <span class="php-var">$e</span>;
</span><span id="330" class="l">            }
</span><span id="331" class="l">        }
</span><span id="332" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$ib</span> &lt;= <span class="php-var">$b</span> &amp;&amp; <span class="php-var">$ib</span> &lt; <span class="php-var">$le</span> &amp;&amp; <span class="php-var">$lb</span> &lt; <span class="php-var">$ib</span>) { <span class="php-comment">// while current element is past current child and last parent is parent for current child</span>
</span><span id="333" class="l">            <span class="php-var">$ret</span>[<span class="php-var">$lb</span>] = <span class="php-var">$le</span>;
</span><span id="334" class="l">        }
</span><span id="335" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="336" class="l">    }
</span><span id="337" class="l">
</span><span id="338" class="l">    <span class="php-keyword1">function</span> _children(<span class="php-var">$ids</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$n</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="339" class="l">        <span class="php-var">$ret</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="340" class="l">        <span class="php-var">$ids</span> = <span class="php-var">$this</span>-&gt;_my_ids(<span class="php-var">$ids</span>);
</span><span id="341" class="l">        <span class="php-keyword1">if</span>(!<span class="php-var">$ids</span>) <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="342" class="l">
</span><span id="343" class="l">        <span class="php-var">$dids</span> = &amp;<span class="php-var">$this</span>-&gt;doc()-&gt;ids;
</span><span id="344" class="l">        <span class="php-var">$le</span> = <span class="php-keyword2">end</span>(<span class="php-var">$ids</span>);
</span><span id="345" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">current</span>(<span class="php-var">$dids</span>) === <span class="php-keyword1">false</span>) <span class="php-var">$ie</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$dids</span>);
</span><span id="346" class="l">        <span class="php-var">$ib</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>);
</span><span id="347" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$ids</span> <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) {
</span><span id="348" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$b</span>+<span class="php-num">4</span> &gt;= <span class="php-var">$e</span>) <span class="php-keyword1">continue</span>; <span class="php-comment">// empty tag; min 3 chars are required for a tag - eg. &lt;b&gt;</span>
</span><span id="349" class="l">
</span><span id="350" class="l">            <span class="php-comment">// child of prev element</span>
</span><span id="351" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$b</span> &lt;= <span class="php-var">$le</span>) {
</span><span id="352" class="l">                <span class="php-keyword1">while</span>(<span class="php-var">$b</span> &lt; <span class="php-var">$ib</span>) <span class="php-keyword1">if</span>(<span class="php-var">$ie</span> = <span class="php-keyword2">prev</span>(<span class="php-var">$dids</span>)) <span class="php-var">$ib</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>); <span class="php-keyword1">else</span> { <span class="php-keyword2">reset</span>(<span class="php-var">$dids</span>); <span class="php-keyword1">break</span>; }
</span><span id="353" class="l">            }
</span><span id="354" class="l">            <span class="php-keyword1">else</span> {
</span><span id="355" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$ie</span> === <span class="php-keyword1">false</span> &amp;&amp; <span class="php-var">$ib</span> &lt; <span class="php-var">$b</span>) <span class="php-keyword1">break</span>;
</span><span id="356" class="l">            }
</span><span id="357" class="l">            <span class="php-var">$le</span> = <span class="php-var">$e</span>;
</span><span id="358" class="l">
</span><span id="359" class="l">            <span class="php-keyword1">while</span>(<span class="php-var">$ib</span> &lt;= <span class="php-var">$b</span>) {
</span><span id="360" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$ie</span> = <span class="php-keyword2">next</span>(<span class="php-var">$dids</span>)) <span class="php-var">$ib</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>);
</span><span id="361" class="l">                <span class="php-keyword1">else</span> { <span class="php-keyword2">end</span>(<span class="php-var">$dids</span>); <span class="php-keyword1">break</span>; }
</span><span id="362" class="l">            }
</span><span id="363" class="l">
</span><span id="364" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$b</span> &lt; <span class="php-var">$ib</span>) {
</span><span id="365" class="l">                <span class="php-var">$i</span> = <span class="php-num">0</span>;
</span><span id="366" class="l">                <span class="php-keyword1">while</span>(<span class="php-var">$ib</span> &lt; <span class="php-var">$e</span>) {
</span><span id="367" class="l">                    <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$n</span>)) <span class="php-var">$ret</span>[<span class="php-var">$ib</span>] = <span class="php-var">$ie</span>;
</span><span id="368" class="l">                    <span class="php-keyword1">elseif</span>(<span class="php-var">$n</span> == <span class="php-var">$i</span>) { <span class="php-var">$ret</span>[<span class="php-var">$ib</span>] = <span class="php-var">$ie</span>; <span class="php-keyword1">break</span>; }
</span><span id="369" class="l">                    <span class="php-keyword1">else</span> ++<span class="php-var">$i</span>;
</span><span id="370" class="l">                    <span class="php-var">$lie</span> = <span class="php-var">$ie</span> &lt; <span class="php-var">$e</span> ? <span class="php-var">$ie</span> : <span class="php-var">$e</span>;
</span><span id="371" class="l">                    <span class="php-keyword1">while</span>(<span class="php-var">$ib</span> &lt;= <span class="php-var">$lie</span>) {
</span><span id="372" class="l">                        <span class="php-keyword1">if</span>(<span class="php-var">$ie</span> = <span class="php-keyword2">next</span>(<span class="php-var">$dids</span>)) <span class="php-var">$ib</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>);
</span><span id="373" class="l">                        <span class="php-keyword1">else</span> { <span class="php-keyword2">end</span>(<span class="php-var">$dids</span>); <span class="php-keyword1">continue</span> <span class="php-num">3</span>; }
</span><span id="374" class="l">                    }
</span><span id="375" class="l">                }
</span><span id="376" class="l">            }
</span><span id="377" class="l">        }
</span><span id="378" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="379" class="l">    }
</span><span id="380" class="l">
</span><span id="381" class="l">   <span class="php-keyword1">function</span> _next(<span class="php-var">$ids</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$n</span>=<span class="php-num">0</span>) {
</span><span id="382" class="l">      <span class="php-var">$ret</span> = self::<span class="php-var">$_ar_</span>;              <span class="php-comment">// array()</span>
</span><span id="383" class="l">      <span class="php-var">$ids</span> = <span class="php-var">$this</span>-&gt;_my_ids(<span class="php-var">$ids</span>);     <span class="php-comment">// ids to search siblings for</span>
</span><span id="384" class="l">      <span class="php-keyword1">if</span>(!<span class="php-var">$ids</span>) <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="385" class="l">
</span><span id="386" class="l">      <span class="php-var">$dids</span> = &amp;<span class="php-var">$this</span>-&gt;doc()-&gt;ids;      <span class="php-comment">// all elements in the doc</span>
</span><span id="387" class="l">      <span class="php-var">$kb</span> = <span class="php-var">$le</span> = self::<span class="php-var">$_mi_</span>;         <span class="php-comment">// [$lb=&gt;$le] (last parent) now is 100% parent for any element</span>
</span><span id="388" class="l">      <span class="php-var">$ke</span> = <span class="php-var">$lb</span> = -<span class="php-num">1</span>;                  <span class="php-comment">// last parent</span>
</span><span id="389" class="l">      <span class="php-var">$ie</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$ids</span>);               <span class="php-comment">// current child</span>
</span><span id="390" class="l">      <span class="php-var">$ib</span> = <span class="php-keyword2">key</span>(<span class="php-var">$ids</span>);
</span><span id="391" class="l">      <span class="php-var">$e</span> = <span class="php-keyword2">current</span>(<span class="php-var">$dids</span>);             <span class="php-comment">// traverse starting from current position</span>
</span><span id="392" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$e</span> !== <span class="php-keyword1">false</span>) <span class="php-keyword1">do</span> { <span class="php-var">$b</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>); } <span class="php-keyword1">while</span>( (<span class="php-var">$ib</span> &lt;= <span class="php-var">$b</span> || <span class="php-var">$e</span> &lt; <span class="php-var">$ib</span>) &amp;&amp; (<span class="php-var">$e</span> = <span class="php-keyword2">prev</span>(<span class="php-var">$dids</span>)) ) ;
</span><span id="393" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$e</span>)) <span class="php-var">$e</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$dids</span>); <span class="php-comment">// current element</span>
</span><span id="394" class="l">
</span><span id="395" class="l">      <span class="php-var">$pt</span> = <span class="php-var">$st</span> = <span class="php-var">$ret</span>;                <span class="php-comment">// stacks: $pt - parents, $st - siblings limits</span>
</span><span id="396" class="l">
</span><span id="397" class="l">      <span class="php-keyword1">while</span>(<span class="php-var">$e</span>) {
</span><span id="398" class="l">         <span class="php-var">$b</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>);
</span><span id="399" class="l"><span class="php-comment">/* 4) */</span> <span class="php-keyword1">if</span>(<span class="php-var">$ib</span> &lt;= <span class="php-var">$b</span>) { <span class="php-comment">// if current element is past our child, then its siblings context is found</span>
</span><span id="400" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$kb</span> &lt; <span class="php-var">$ke</span>) <span class="php-var">$st</span>[<span class="php-var">$kb</span>] = <span class="php-var">$ke</span>;
</span><span id="401" class="l">           <span class="php-var">$kb</span> = <span class="php-var">$ie</span>;
</span><span id="402" class="l">           <span class="php-var">$ke</span> = <span class="php-var">$le</span>;
</span><span id="403" class="l">
</span><span id="404" class="l">           <span class="php-var">$ib</span> = (<span class="php-var">$ie</span> = <span class="php-keyword2">next</span>(<span class="php-var">$ids</span>)) ? <span class="php-keyword2">key</span>(<span class="php-var">$ids</span>) : self::<span class="php-var">$_mi_</span>; <span class="php-comment">// $ie &lt; $ib === no more children</span>
</span><span id="405" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$ie</span> &lt; <span class="php-var">$ib</span>) <span class="php-keyword1">break</span>; <span class="php-comment">// no more children, empty siblings context, search done!</span>
</span><span id="406" class="l">
</span><span id="407" class="l">           <span class="php-comment">// pop from stack, if not empty</span>
</span><span id="408" class="l">           <span class="php-keyword1">while</span>(<span class="php-var">$le</span> &lt; <span class="php-var">$ib</span> &amp;&amp; <span class="php-var">$pt</span>) { <span class="php-comment">// if past current parent, pop another one from the stack</span>
</span><span id="409" class="l">              <span class="php-var">$le</span> = <span class="php-keyword2">end</span>(<span class="php-var">$pt</span>);
</span><span id="410" class="l">              <span class="php-keyword1">unset</span>(<span class="php-var">$pt</span>[<span class="php-var">$lb</span> = <span class="php-keyword2">key</span>(<span class="php-var">$pt</span>)]); <span class="php-comment">// there must be something in the stack anyway</span>
</span><span id="411" class="l">           }
</span><span id="412" class="l">         }
</span><span id="413" class="l">
</span><span id="414" class="l"><span class="php-comment">/* 3) */</span> <span class="php-keyword1">if</span>(<span class="php-var">$b</span> &lt; <span class="php-var">$ib</span> &amp;&amp; <span class="php-var">$ib</span> &lt; <span class="php-var">$e</span>) { <span class="php-comment">// push the parents to their stack</span>
</span><span id="415" class="l">           <span class="php-var">$pt</span>[<span class="php-var">$lb</span>] = <span class="php-var">$le</span>;
</span><span id="416" class="l">           <span class="php-var">$lb</span> = <span class="php-var">$b</span>;
</span><span id="417" class="l">           <span class="php-var">$le</span> = <span class="php-var">$e</span>;
</span><span id="418" class="l">         }
</span><span id="419" class="l">
</span><span id="420" class="l">         <span class="php-var">$e</span> = <span class="php-keyword2">next</span>(<span class="php-var">$dids</span>);
</span><span id="421" class="l">      } <span class="php-comment">// while</span>
</span><span id="422" class="l">
</span><span id="423" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$ke</span> &lt; <span class="php-var">$kb</span>) <span class="php-keyword1">return</span> <span class="php-var">$ret</span>; <span class="php-comment">// no siblings contexts found!</span>
</span><span id="424" class="l">      <span class="php-var">$st</span>[<span class="php-var">$kb</span>] = <span class="php-var">$ke</span>;
</span><span id="425" class="l">      <span class="php-keyword2">ksort</span>(<span class="php-var">$st</span>);
</span><span id="426" class="l">
</span><span id="427" class="l">      <span class="php-keyword1">foreach</span>(<span class="php-var">$st</span> <span class="php-keyword1">as</span> <span class="php-var">$kb</span> =&gt; <span class="php-var">$ke</span>) {
</span><span id="428" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$e</span> !== <span class="php-keyword1">false</span>) <span class="php-keyword1">do</span> { <span class="php-var">$b</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>); } <span class="php-keyword1">while</span>( <span class="php-var">$kb</span> &lt; <span class="php-var">$b</span> &amp;&amp; (<span class="php-var">$e</span> = <span class="php-keyword2">prev</span>(<span class="php-var">$dids</span>)) ) ;
</span><span id="429" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$e</span>)) <span class="php-var">$e</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$dids</span>); <span class="php-comment">// current element</span>
</span><span id="430" class="l">        <span class="php-keyword1">do</span> {
</span><span id="431" class="l">           <span class="php-var">$b</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>);
</span><span id="432" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$kb</span> &lt; <span class="php-var">$b</span>) {
</span><span id="433" class="l">             <span class="php-comment">// iterate next siblings</span>
</span><span id="434" class="l">             <span class="php-var">$i</span> = <span class="php-num">0</span>;
</span><span id="435" class="l">             <span class="php-keyword1">while</span>(<span class="php-var">$b</span> &lt; <span class="php-var">$ke</span>) {
</span><span id="436" class="l">               <span class="php-keyword1">if</span>(<span class="php-var">$n</span> == <span class="php-var">$i</span>) { <span class="php-var">$ret</span>[<span class="php-var">$b</span>] = <span class="php-var">$e</span>; <span class="php-keyword1">break</span>; } <span class="php-keyword1">else</span> ++<span class="php-var">$i</span>;
</span><span id="437" class="l">               <span class="php-var">$lie</span> = <span class="php-var">$e</span> &lt; <span class="php-var">$ke</span> ? <span class="php-var">$e</span> : <span class="php-var">$ke</span>;
</span><span id="438" class="l">               <span class="php-keyword1">while</span>(<span class="php-var">$b</span> &lt;= <span class="php-var">$lie</span> &amp;&amp; (<span class="php-var">$e</span> = <span class="php-keyword2">next</span>(<span class="php-var">$dids</span>))) <span class="php-var">$b</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>);
</span><span id="439" class="l">               <span class="php-keyword1">if</span>(!<span class="php-var">$e</span>) { <span class="php-var">$e</span> = <span class="php-keyword2">end</span>(<span class="php-var">$dids</span>); <span class="php-keyword1">break</span>; }
</span><span id="440" class="l">             }
</span><span id="441" class="l">             <span class="php-keyword1">break</span>;
</span><span id="442" class="l">           }
</span><span id="443" class="l">        } <span class="php-keyword1">while</span>(<span class="php-var">$e</span> = <span class="php-keyword2">next</span>(<span class="php-var">$dids</span>));
</span><span id="444" class="l">      }
</span><span id="445" class="l">
</span><span id="446" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="447" class="l">   }
</span><span id="448" class="l">
</span><span id="449" class="l">   <span class="php-keyword1">function</span> _prev(<span class="php-var">$ids</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$n</span>=<span class="php-num">0</span>) {
</span><span id="450" class="l">        <span class="php-var">$ret</span> = self::<span class="php-var">$_ar_</span>;              <span class="php-comment">// array()</span>
</span><span id="451" class="l">        <span class="php-var">$ids</span> = <span class="php-var">$this</span>-&gt;_my_ids(<span class="php-var">$ids</span>);     <span class="php-comment">// ids to search siblings for</span>
</span><span id="452" class="l">        <span class="php-keyword1">if</span>(!<span class="php-var">$ids</span>) <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="453" class="l">
</span><span id="454" class="l">        <span class="php-var">$dids</span> = &amp;<span class="php-var">$this</span>-&gt;doc()-&gt;ids;      <span class="php-comment">// all elements in the doc</span>
</span><span id="455" class="l">        <span class="php-var">$kb</span> = <span class="php-var">$le</span> = self::<span class="php-var">$_mi_</span>;         <span class="php-comment">// [$lb=&gt;$le] (last parent) now is 100% parent for any element</span>
</span><span id="456" class="l">        <span class="php-var">$ke</span> = <span class="php-var">$lb</span> = -<span class="php-num">1</span>;                  <span class="php-comment">// last parent</span>
</span><span id="457" class="l">        <span class="php-var">$ie</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$ids</span>);               <span class="php-comment">// current child</span>
</span><span id="458" class="l">        <span class="php-var">$ib</span> = <span class="php-keyword2">key</span>(<span class="php-var">$ids</span>);
</span><span id="459" class="l">        <span class="php-var">$e</span> = <span class="php-keyword2">current</span>(<span class="php-var">$dids</span>);             <span class="php-comment">// traverse starting from current position</span>
</span><span id="460" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$e</span> !== <span class="php-keyword1">false</span>) <span class="php-keyword1">do</span> {
</span><span id="461" class="l">            <span class="php-var">$b</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>);
</span><span id="462" class="l">        } <span class="php-keyword1">while</span>( (<span class="php-var">$ib</span> &lt;= <span class="php-var">$b</span> || <span class="php-var">$e</span> &lt; <span class="php-var">$ib</span>) &amp;&amp; (<span class="php-var">$e</span> = <span class="php-keyword2">prev</span>(<span class="php-var">$dids</span>)) ) ;
</span><span id="463" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$e</span>)) <span class="php-var">$e</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$dids</span>); <span class="php-comment">// current element</span>
</span><span id="464" class="l">
</span><span id="465" class="l">      <span class="php-var">$pt</span> = <span class="php-var">$st</span> = <span class="php-var">$ret</span>;                <span class="php-comment">// stacks: $pt - parents, $st - siblings limits</span>
</span><span id="466" class="l">      <span class="php-keyword1">while</span>(<span class="php-var">$e</span>) {
</span><span id="467" class="l">         <span class="php-var">$b</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>);
</span><span id="468" class="l"><span class="php-comment">/* 4) */</span> <span class="php-keyword1">if</span>(<span class="php-var">$ib</span> &lt;= <span class="php-var">$b</span>) { <span class="php-comment">// if current element is past our child, then its siblings context is found</span>
</span><span id="469" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$kb</span> &lt; <span class="php-var">$ke</span>) <span class="php-var">$st</span>[<span class="php-var">$kb</span>] = <span class="php-var">$ke</span>;
</span><span id="470" class="l">           <span class="php-var">$kb</span> = <span class="php-var">$lb</span>;
</span><span id="471" class="l">           <span class="php-var">$ke</span> = <span class="php-var">$ib</span>;
</span><span id="472" class="l">
</span><span id="473" class="l">           <span class="php-var">$ib</span> = (<span class="php-var">$ie</span> = <span class="php-keyword2">next</span>(<span class="php-var">$ids</span>)) ? <span class="php-keyword2">key</span>(<span class="php-var">$ids</span>) : self::<span class="php-var">$_mi_</span>; <span class="php-comment">// $ie &lt; $ib === no more children</span>
</span><span id="474" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$ie</span> &lt; <span class="php-var">$ib</span>) <span class="php-keyword1">break</span>; <span class="php-comment">// no more children, empty siblings context, search done!</span>
</span><span id="475" class="l">
</span><span id="476" class="l">           <span class="php-comment">// pop from stack, if not empty</span>
</span><span id="477" class="l">           <span class="php-keyword1">while</span>(<span class="php-var">$le</span> &lt; <span class="php-var">$ib</span> &amp;&amp; <span class="php-var">$pt</span>) { <span class="php-comment">// if past current parent, pop another one from the stack</span>
</span><span id="478" class="l">              <span class="php-var">$le</span> = <span class="php-keyword2">end</span>(<span class="php-var">$pt</span>);
</span><span id="479" class="l">              <span class="php-keyword1">unset</span>(<span class="php-var">$pt</span>[<span class="php-var">$lb</span> = <span class="php-keyword2">key</span>(<span class="php-var">$pt</span>)]); <span class="php-comment">// there must be something in the stack anyway</span>
</span><span id="480" class="l">           }
</span><span id="481" class="l">         }
</span><span id="482" class="l">
</span><span id="483" class="l"><span class="php-comment">/* 3) */</span> <span class="php-keyword1">if</span>(<span class="php-var">$b</span> &lt; <span class="php-var">$ib</span> &amp;&amp; <span class="php-var">$ib</span> &lt; <span class="php-var">$e</span>) { <span class="php-comment">// push the parents to their stack</span>
</span><span id="484" class="l">           <span class="php-var">$pt</span>[<span class="php-var">$lb</span>] = <span class="php-var">$le</span>;
</span><span id="485" class="l">           <span class="php-var">$lb</span> = <span class="php-var">$b</span>;
</span><span id="486" class="l">           <span class="php-var">$le</span> = <span class="php-var">$e</span>;
</span><span id="487" class="l">         }
</span><span id="488" class="l">
</span><span id="489" class="l">         <span class="php-var">$e</span> = <span class="php-keyword2">next</span>(<span class="php-var">$dids</span>);
</span><span id="490" class="l">      } <span class="php-comment">// while</span>
</span><span id="491" class="l">
</span><span id="492" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$ke</span> &lt; <span class="php-var">$kb</span>) <span class="php-keyword1">return</span> <span class="php-var">$ret</span>; <span class="php-comment">// no siblings contexts found!</span>
</span><span id="493" class="l">
</span><span id="494" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$e</span> !== <span class="php-keyword1">false</span>) <span class="php-keyword1">do</span> { <span class="php-var">$b</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>); } <span class="php-keyword1">while</span>( <span class="php-var">$kb</span> &lt; <span class="php-var">$b</span> &amp;&amp; (<span class="php-var">$e</span> = <span class="php-keyword2">prev</span>(<span class="php-var">$dids</span>)) ) ;
</span><span id="495" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$e</span>)) <span class="php-var">$e</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$dids</span>); <span class="php-comment">// current element</span>
</span><span id="496" class="l">
</span><span id="497" class="l">      <span class="php-var">$st</span>[<span class="php-var">$kb</span>] = <span class="php-var">$ke</span>;
</span><span id="498" class="l">      <span class="php-keyword2">ksort</span>(<span class="php-var">$st</span>);
</span><span id="499" class="l">      <span class="php-var">$kb</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$st</span>);
</span><span id="500" class="l">      <span class="php-var">$ke</span> = <span class="php-keyword2">key</span>(<span class="php-var">$st</span>);
</span><span id="501" class="l">
</span><span id="502" class="l">      <span class="php-keyword1">do</span> {
</span><span id="503" class="l">         <span class="php-var">$b</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>);
</span><span id="504" class="l">
</span><span id="505" class="l"><span class="php-comment">/* 1) */</span> <span class="php-keyword1">if</span>(<span class="php-var">$kb</span> &lt; <span class="php-var">$b</span>) {
</span><span id="506" class="l">           <span class="php-comment">// iterate next siblings</span>
</span><span id="507" class="l">           <span class="php-var">$pt</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="508" class="l">           <span class="php-var">$lie</span> = -<span class="php-num">1</span>;
</span><span id="509" class="l">           <span class="php-keyword1">while</span>(<span class="php-var">$b</span> &lt; <span class="php-var">$ke</span>) {
</span><span id="510" class="l">             <span class="php-var">$pt</span>[<span class="php-var">$b</span>] = <span class="php-var">$e</span>;
</span><span id="511" class="l">             <span class="php-var">$lie</span> = <span class="php-var">$e</span> &lt; <span class="php-var">$ke</span> ? <span class="php-var">$e</span> : <span class="php-var">$ke</span>;
</span><span id="512" class="l">             <span class="php-keyword1">while</span>(<span class="php-var">$b</span> &lt;= <span class="php-var">$lie</span> &amp;&amp; (<span class="php-var">$e</span> = <span class="php-keyword2">next</span>(<span class="php-var">$dids</span>))) <span class="php-var">$b</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>);
</span><span id="513" class="l">             <span class="php-keyword1">if</span>(!<span class="php-var">$e</span>) { <span class="php-var">$e</span> = <span class="php-keyword2">end</span>(<span class="php-var">$dids</span>); <span class="php-keyword1">break</span>; }
</span><span id="514" class="l">           }
</span><span id="515" class="l">
</span><span id="516" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$pt</span>) {
</span><span id="517" class="l">              <span class="php-var">$c</span>  = <span class="php-keyword2">count</span>(<span class="php-var">$pt</span>);
</span><span id="518" class="l">              <span class="php-var">$i</span>  = <span class="php-var">$n</span> &lt; <span class="php-num">0</span> ? <span class="php-num">0</span> : <span class="php-var">$c</span>;
</span><span id="519" class="l">              <span class="php-var">$i</span> -= <span class="php-var">$n</span> + <span class="php-num">1</span>;
</span><span id="520" class="l">              <span class="php-keyword1">if</span>(<span class="php-num">0</span> &lt;= <span class="php-var">$i</span> &amp;&amp; <span class="php-var">$i</span> &lt; <span class="php-var">$c</span>) {
</span><span id="521" class="l">                 <span class="php-var">$pt</span> = <span class="php-keyword2">array_slice</span>(<span class="php-var">$pt</span>, <span class="php-var">$i</span>, <span class="php-num">1</span>, <span class="php-keyword1">true</span>);
</span><span id="522" class="l">                 <span class="php-var">$ret</span>[<span class="php-keyword2">key</span>(<span class="php-var">$pt</span>)] = <span class="php-keyword2">reset</span>(<span class="php-var">$pt</span>);
</span><span id="523" class="l">              }
</span><span id="524" class="l">           }
</span><span id="525" class="l">           <span class="php-var">$pt</span> = self::<span class="php-var">$_nl_</span>;
</span><span id="526" class="l">
</span><span id="527" class="l">           <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$st</span>)) <span class="php-keyword1">break</span>; <span class="php-comment">// stack empty, no more children, search done!</span>
</span><span id="528" class="l">
</span><span id="529" class="l">           <span class="php-comment">// pop from stack, if not empty</span>
</span><span id="530" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$kb</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$st</span>)) <span class="php-keyword1">unset</span>(<span class="php-var">$st</span>[<span class="php-var">$ke</span> = <span class="php-keyword2">key</span>(<span class="php-var">$st</span>)]);
</span><span id="531" class="l">           <span class="php-keyword1">else</span> <span class="php-var">$kb</span> = self::<span class="php-var">$_mi_</span>; <span class="php-comment">// $ke &lt; $kb === context empy</span>
</span><span id="532" class="l">
</span><span id="533" class="l">           <span class="php-comment">// rewind back</span>
</span><span id="534" class="l">           <span class="php-keyword1">while</span>(<span class="php-var">$kb</span> &lt; <span class="php-var">$b</span> &amp;&amp; (<span class="php-var">$e</span> = <span class="php-keyword2">prev</span>(<span class="php-var">$dids</span>))) <span class="php-var">$b</span> = <span class="php-keyword2">key</span>(<span class="php-var">$dids</span>);
</span><span id="535" class="l">           <span class="php-keyword1">if</span>(!<span class="php-var">$e</span>) <span class="php-var">$e</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$dids</span>); <span class="php-comment">// only for wrong context! - error</span>
</span><span id="536" class="l">         }
</span><span id="537" class="l">      } <span class="php-keyword1">while</span>(<span class="php-var">$e</span> = <span class="php-keyword2">next</span>(<span class="php-var">$dids</span>));
</span><span id="538" class="l">
</span><span id="539" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="540" class="l">   }
</span><span id="541" class="l">
</span><span id="542" class="l">   <span class="php-keyword1">function</span> _all(<span class="php-var">$ids</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="543" class="l">      <span class="php-var">$ret</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="544" class="l">      <span class="php-var">$ids</span> = <span class="php-var">$this</span>-&gt;_my_ids(<span class="php-var">$ids</span>);
</span><span id="545" class="l">      <span class="php-keyword1">if</span>(!<span class="php-var">$ids</span>) <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="546" class="l">
</span><span id="547" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;doc()-&gt;_find(<span class="php-quote">'*'</span>, <span class="php-keyword1">NULL</span>, <span class="php-keyword1">NULL</span>, <span class="php-var">$ids</span>);
</span><span id="548" class="l">   }
</span><span id="549" class="l">
</span><span id="550" class="l">    <span class="php-comment">/// $el &lt; $this, with $eq == true -&gt; $el &lt;= $this</span>
</span><span id="551" class="l">    <span class="php-keyword1">function</span> _has(<span class="php-var">$el</span>, <span class="php-var">$eq</span>=<span class="php-keyword1">false</span>) {
</span><span id="552" class="l">       <span class="php-keyword1">if</span>(<span class="php-keyword2">is_int</span>(<span class="php-var">$el</span>)) {
</span><span id="553" class="l">          <span class="php-var">$e</span> = <span class="php-keyword2">end</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="554" class="l">          <span class="php-keyword1">if</span>(<span class="php-var">$el</span> &gt;= <span class="php-var">$e</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_fl_</span>;
</span><span id="555" class="l">          <span class="php-keyword1">foreach</span>(<span class="php-var">$this</span>-&gt;ids <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) {
</span><span id="556" class="l">             <span class="php-keyword1">if</span>(<span class="php-var">$el</span> &lt;  <span class="php-var">$b</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_fl_</span>;
</span><span id="557" class="l">             <span class="php-keyword1">if</span>(<span class="php-var">$el</span> == <span class="php-var">$b</span>) <span class="php-keyword1">return</span> <span class="php-var">$eq</span>;
</span><span id="558" class="l">             <span class="php-keyword1">if</span>(<span class="php-var">$el</span> &lt;  <span class="php-var">$e</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_tr_</span>;
</span><span id="559" class="l">          }
</span><span id="560" class="l">          <span class="php-keyword1">return</span> self::<span class="php-var">$_fl_</span>;
</span><span id="561" class="l">       }
</span><span id="562" class="l">       <span class="php-keyword1">if</span>(<span class="php-var">$el</span> <span class="php-keyword1">instanceof</span> self) { <span class="php-keyword1">if</span>(<span class="php-var">$el</span> === <span class="php-var">$this</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_fl_</span>; <span class="php-var">$el</span> = <span class="php-var">$el</span>-&gt;ids; } <span class="php-keyword1">else</span>
</span><span id="563" class="l">       <span class="php-var">$el</span> = <span class="php-var">$this</span>-&gt;_ctx_ids(<span class="php-var">$this</span>-&gt;_doc_ids(<span class="php-var">$el</span>, <span class="php-keyword1">true</span>));
</span><span id="564" class="l">       <span class="php-keyword1">foreach</span>(<span class="php-var">$el</span> <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) <span class="php-keyword1">if</span>(!<span class="php-var">$this</span>-&gt;has(<span class="php-var">$b</span>)) <span class="php-keyword1">return</span> self::<span class="php-var">$_fl_</span>;
</span><span id="565" class="l">       <span class="php-keyword1">return</span> self::<span class="php-var">$_tr_</span>;
</span><span id="566" class="l">    }
</span><span id="567" class="l">
</span><span id="568" class="l">    <span class="php-comment">/// filter all ids of $el that are contained in $this-&gt;ids</span>
</span><span id="569" class="l">    <span class="php-keyword1">function</span> _filter(<span class="php-var">$el</span>, <span class="php-var">$eq</span>=<span class="php-keyword1">false</span>) {
</span><span id="570" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$el</span> <span class="php-keyword1">instanceof</span> self) <span class="php-var">$o</span> = <span class="php-var">$el</span>;
</span><span id="571" class="l">      <span class="php-var">$el</span> = <span class="php-var">$this</span>-&gt;_doc_ids(<span class="php-var">$el</span>);
</span><span id="572" class="l">      <span class="php-var">$ret</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="573" class="l">
</span><span id="574" class="l">      <span class="php-var">$lb</span> = <span class="php-var">$le</span> = -<span class="php-num">1</span>;    <span class="php-comment">// last parent</span>
</span><span id="575" class="l">      <span class="php-var">$ie</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$el</span>); <span class="php-comment">// current child</span>
</span><span id="576" class="l">      <span class="php-var">$ib</span> = <span class="php-keyword2">key</span>(<span class="php-var">$el</span>);
</span><span id="577" class="l">      <span class="php-keyword1">foreach</span>(<span class="php-var">$this</span>-&gt;ids <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) {
</span><span id="578" class="l">         <span class="php-keyword1">while</span>(<span class="php-var">$ib</span> &lt; <span class="php-var">$b</span> || !<span class="php-var">$eq</span> &amp;&amp; <span class="php-var">$ib</span> == <span class="php-var">$b</span>) {
</span><span id="579" class="l">           <span class="php-var">$ie</span> = <span class="php-keyword2">next</span>(<span class="php-var">$el</span>);
</span><span id="580" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$ie</span> === <span class="php-keyword1">false</span>) { <span class="php-var">$ib</span> = -<span class="php-num">1</span>; <span class="php-keyword1">break</span> <span class="php-num">2</span>; }
</span><span id="581" class="l">           <span class="php-var">$ib</span> = <span class="php-keyword2">key</span>(<span class="php-var">$el</span>);
</span><span id="582" class="l">         }
</span><span id="583" class="l">         <span class="php-comment">// $b &lt; $ib</span>
</span><span id="584" class="l">         <span class="php-keyword1">while</span>(<span class="php-var">$ib</span> &lt; <span class="php-var">$e</span>) {
</span><span id="585" class="l">           <span class="php-var">$ret</span>[<span class="php-var">$ib</span>] = <span class="php-var">$ie</span>;
</span><span id="586" class="l">           <span class="php-var">$ie</span> = <span class="php-keyword2">next</span>(<span class="php-var">$el</span>);
</span><span id="587" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$ie</span> === <span class="php-keyword1">false</span>) { <span class="php-var">$ib</span> = -<span class="php-num">1</span>; <span class="php-keyword1">break</span> <span class="php-num">2</span>; }
</span><span id="588" class="l">           <span class="php-var">$ib</span> = <span class="php-keyword2">key</span>(<span class="php-var">$el</span>);
</span><span id="589" class="l">         }
</span><span id="590" class="l">      }
</span><span id="591" class="l">      <span class="php-keyword1">if</span>(!<span class="php-keyword1">empty</span>(<span class="php-var">$o</span>)) {
</span><span id="592" class="l">         <span class="php-var">$o</span> = <span class="php-keyword1">clone</span> <span class="php-var">$o</span>;
</span><span id="593" class="l">         <span class="php-var">$o</span>-&gt;ids = <span class="php-var">$ret</span>;
</span><span id="594" class="l">         <span class="php-var">$ret</span> = <span class="php-var">$o</span>;
</span><span id="595" class="l">      }
</span><span id="596" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="597" class="l">    }
</span><span id="598" class="l">
</span><span id="599" class="l"><span class="php-comment">// - Magic ------------------------------------------------</span>
</span><span id="600" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> __get(<span class="php-var">$name</span>) {
</span><span id="601" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">array_key_exists</span>(<span class="php-var">$name</span>, <span class="php-var">$this</span>-&gt;_prop)) <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;_prop[<span class="php-var">$name</span>];
</span><span id="602" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;attr(<span class="php-var">$name</span>);
</span><span id="603" class="l">    }
</span><span id="604" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> __set(<span class="php-var">$name</span>, <span class="php-var">$value</span>) {
</span><span id="605" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$value</span>)) <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;_prop[<span class="php-var">$name</span>] = <span class="php-var">$value</span>;
</span><span id="606" class="l">        <span class="php-var">$this</span>-&gt;__unset(<span class="php-var">$name</span>);
</span><span id="607" class="l">    }
</span><span id="608" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> __isset(<span class="php-var">$name</span>) {
</span><span id="609" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;_prop[<span class="php-var">$name</span>]);
</span><span id="610" class="l">    }
</span><span id="611" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> __unset(<span class="php-var">$name</span>) {
</span><span id="612" class="l">        <span class="php-keyword1">unset</span>(<span class="php-var">$this</span>-&gt;_prop[<span class="php-var">$name</span>]);
</span><span id="613" class="l">    }
</span><span id="614" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="615" class="l">    <span class="php-comment">// Countable:</span>
</span><span id="616" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">count</span>() { <span class="php-keyword1">return</span> <span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;ids) ? <span class="php-keyword2">count</span>(<span class="php-var">$this</span>-&gt;ids) : <span class="php-num">0</span>; }
</span><span id="617" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="618" class="l">    <span class="php-comment">// Iterable:</span>
</span><span id="619" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">current</span>() {
</span><span id="620" class="l">        <span class="php-var">$k</span> = <span class="php-keyword2">key</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="621" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$k</span> === <span class="php-keyword1">NULL</span>) <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;
</span><span id="622" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword1">array</span>(<span class="php-var">$k</span> =&gt; <span class="php-var">$this</span>-&gt;ids[<span class="php-var">$k</span>]);
</span><span id="623" class="l">    }
</span><span id="624" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> valid()   { <span class="php-keyword1">return</span> <span class="php-keyword2">current</span>(<span class="php-var">$this</span>-&gt;ids) !== <span class="php-keyword1">false</span>; }
</span><span id="625" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">key</span>()     { <span class="php-keyword1">return</span> <span class="php-keyword2">key</span>(<span class="php-var">$this</span>-&gt;ids); }
</span><span id="626" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">next</span>()    { <span class="php-keyword1">return</span> <span class="php-keyword2">next</span>(<span class="php-var">$this</span>-&gt;ids) !== <span class="php-keyword1">false</span> ? <span class="php-var">$this</span>-&gt;<span class="php-keyword2">current</span>() : <span class="php-keyword1">false</span>; }
</span><span id="627" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">prev</span>()    { <span class="php-keyword1">return</span> <span class="php-keyword2">prev</span>(<span class="php-var">$this</span>-&gt;ids) !== <span class="php-keyword1">false</span> ? <span class="php-var">$this</span>-&gt;<span class="php-keyword2">current</span>() : <span class="php-keyword1">false</span>; }
</span><span id="628" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">rewind</span>()  { <span class="php-keyword2">reset</span>(<span class="php-var">$this</span>-&gt;ids); <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;<span class="php-keyword2">current</span>(); }
</span><span id="629" class="l">
</span><span id="630" class="l"><span class="php-comment">// - Helpers ------------------------------------------------</span>
</span><span id="631" class="l">
</span><span id="632" class="l">    <span class="php-comment">/**
</span></span><span id="633" class="l"><span class="php-comment">     * Normalize a CSS selector pseudo-class string.
</span></span><span id="634" class="l"><span class="php-comment">     * ( int, string or array(name =&gt; value) )
</span></span><span id="635" class="l"><span class="php-comment">     *
</span></span><span id="636" class="l"><span class="php-comment">     * @return int|array
</span></span><span id="637" class="l"><span class="php-comment">     *
</span></span><span id="638" class="l"><span class="php-comment">     * @internal
</span></span><span id="639" class="l"><span class="php-comment">     */</span>
</span><span id="640" class="l">    <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> html_normal_pseudoClass(<span class="php-var">$p</span>) {
</span><span id="641" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">is_int</span>(<span class="php-var">$p</span>)) <span class="php-keyword1">return</span> <span class="php-var">$p</span>;
</span><span id="642" class="l">        <span class="php-var">$i</span> = (int)<span class="php-var">$p</span>;
</span><span id="643" class="l">        <span class="php-keyword1">if</span>((string)<span class="php-var">$i</span> === <span class="php-var">$p</span>) <span class="php-keyword1">return</span> <span class="php-var">$i</span>;
</span><span id="644" class="l">
</span><span id="645" class="l">        <span class="php-keyword1">static</span> <span class="php-var">$map</span> = <span class="php-keyword1">array</span>(
</span><span id="646" class="l">            <span class="php-quote">'lt'</span>       =&gt; <span class="php-quote">'&lt;'</span>,
</span><span id="647" class="l">            <span class="php-quote">'gt'</span>       =&gt; <span class="php-quote">'&gt;'</span>,
</span><span id="648" class="l">            <span class="php-quote">'prev'</span>     =&gt; <span class="php-quote">'-'</span>,
</span><span id="649" class="l">            <span class="php-quote">'next'</span>     =&gt; <span class="php-quote">'+'</span>,
</span><span id="650" class="l">            <span class="php-quote">'parent'</span>   =&gt; <span class="php-quote">'|'</span>,
</span><span id="651" class="l">            <span class="php-quote">'children'</span> =&gt; <span class="php-quote">'*'</span>,
</span><span id="652" class="l">            <span class="php-quote">'*'</span>        =&gt; <span class="php-quote">'*'</span>
</span><span id="653" class="l">        );
</span><span id="654" class="l">        <span class="php-var">$p</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">'('</span>, <span class="php-var">$p</span>, <span class="php-num">2</span>);
</span><span id="655" class="l">        <span class="php-var">$p</span>[<span class="php-num">1</span>] = <span class="php-keyword1">isset</span>(<span class="php-var">$p</span>[<span class="php-num">1</span>]) ? <span class="php-keyword2">trim</span>(<span class="php-keyword2">rtrim</span>(<span class="php-var">$p</span>[<span class="php-num">1</span>], <span class="php-quote">')'</span>)) : <span class="php-keyword1">NULL</span>;
</span><span id="656" class="l">        <span class="php-keyword1">switch</span>(<span class="php-var">$p</span>[<span class="php-num">0</span>]) {
</span><span id="657" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'first'</span>      :
</span><span id="658" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'first-child'</span>: <span class="php-keyword1">return</span> <span class="php-num">0</span>;
</span><span id="659" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'last'</span>       :
</span><span id="660" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'last-child'</span> : <span class="php-keyword1">return</span> -<span class="php-num">1</span>;
</span><span id="661" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'eq'</span>         : <span class="php-keyword1">return</span> (int)<span class="php-var">$p</span>[<span class="php-num">1</span>];
</span><span id="662" class="l">            <span class="php-keyword1">default</span>:
</span><span id="663" class="l">                <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$map</span>[<span class="php-var">$p</span>[<span class="php-num">0</span>]])) {
</span><span id="664" class="l">                    <span class="php-var">$p</span>[<span class="php-num">0</span>] = <span class="php-var">$map</span>[<span class="php-var">$p</span>[<span class="php-num">0</span>]];
</span><span id="665" class="l">                    <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$p</span>[<span class="php-num">1</span>])) <span class="php-var">$p</span>[<span class="php-num">1</span>] = (int)<span class="php-var">$p</span>[<span class="php-num">1</span>];
</span><span id="666" class="l">                }
</span><span id="667" class="l">                <span class="php-keyword1">else</span> {
</span><span id="668" class="l">                <span class="php-comment">// ??? unknown ps</span>
</span><span id="669" class="l">                }
</span><span id="670" class="l">        }
</span><span id="671" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword1">array</span>(<span class="php-var">$p</span>[<span class="php-num">0</span>]=&gt;<span class="php-var">$p</span>[<span class="php-num">1</span>]);
</span><span id="672" class="l">    }
</span><span id="673" class="l">
</span><span id="674" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="675" class="l">    <span class="php-comment">/**
</span></span><span id="676" class="l"><span class="php-comment">     * Parse a selector string into an array structure.
</span></span><span id="677" class="l"><span class="php-comment">     *
</span></span><span id="678" class="l"><span class="php-comment">     * tn1#id1 .cl1.cl2:first tn2:5 , tn3.cl3 tn4#id2:eq(-1) &gt; tn5:last-child &gt; tn6:lt(3)
</span></span><span id="679" class="l"><span class="php-comment">     *  --&gt;
</span></span><span id="680" class="l"><span class="php-comment">     *   [
</span></span><span id="681" class="l"><span class="php-comment">     *      [
</span></span><span id="682" class="l"><span class="php-comment">     *          [{ n: &quot;tn1&quot;, i: &quot;id1&quot;, c: [],            p: []  }],
</span></span><span id="683" class="l"><span class="php-comment">     *          [{ n: NULL,  i: NULL,  c: [&quot;cl1&quot;,&quot;cl2&quot;], p: [0] }],
</span></span><span id="684" class="l"><span class="php-comment">     *          [{ n: &quot;tn2&quot;, i: NULL,  c: [],            p: [5] }]
</span></span><span id="685" class="l"><span class="php-comment">     *      ]
</span></span><span id="686" class="l"><span class="php-comment">     *    , [
</span></span><span id="687" class="l"><span class="php-comment">     *          [{ n: &quot;tn3&quot;, i: NULL, c: [&quot;cl3&quot;], p: [] }],
</span></span><span id="688" class="l"><span class="php-comment">     *          [
</span></span><span id="689" class="l"><span class="php-comment">     *              { n: &quot;tn4&quot;, i: &quot;id2&quot;, c: [], p: [-1]   },
</span></span><span id="690" class="l"><span class="php-comment">     *              { n: &quot;tn5&quot;, i: NULL , c: [], p: [-1]   },
</span></span><span id="691" class="l"><span class="php-comment">     *              { n: &quot;tn6&quot;, i: NULL , c: [], p: [&quot;&lt;3&quot;] }
</span></span><span id="692" class="l"><span class="php-comment">     *          ]
</span></span><span id="693" class="l"><span class="php-comment">     *      ]
</span></span><span id="694" class="l"><span class="php-comment">     *   ]
</span></span><span id="695" class="l"><span class="php-comment">     *
</span></span><span id="696" class="l"><span class="php-comment">     * @return array
</span></span><span id="697" class="l"><span class="php-comment">     *
</span></span><span id="698" class="l"><span class="php-comment">     * @internal
</span></span><span id="699" class="l"><span class="php-comment">     */</span>
</span><span id="700" class="l">    <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> html_selector2struc(<span class="php-var">$sel</span>) {
</span><span id="701" class="l">        <span class="php-var">$sc</span> = <span class="php-quote">'#.:'</span>;
</span><span id="702" class="l">        <span class="php-var">$n</span> = <span class="php-keyword1">NULL</span>;
</span><span id="703" class="l">        <span class="php-var">$a</span> = <span class="php-keyword1">array</span>();
</span><span id="704" class="l">        <span class="php-var">$def</span> = <span class="php-keyword1">array</span>(<span class="php-quote">'n'</span>=&gt;<span class="php-var">$n</span>, <span class="php-quote">'i'</span>=&gt;<span class="php-var">$n</span>, <span class="php-quote">'c'</span>=&gt;<span class="php-var">$a</span>, <span class="php-quote">'p'</span>=&gt;<span class="php-var">$a</span>);
</span><span id="705" class="l">        <span class="php-var">$sel</span> = <span class="php-keyword2">rtrim</span>(<span class="php-keyword2">trim</span>(<span class="php-keyword2">preg_replace</span>(<span class="php-quote">'/\\s*(&gt;|,)\\s*/'</span>, <span class="php-quote">'$1'</span>, <span class="php-var">$sel</span>), <span class="php-quote">&quot; \t\n\r,&gt;&quot;</span>), <span class="php-var">$sc</span>);
</span><span id="706" class="l">        <span class="php-var">$sel</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">','</span>, <span class="php-var">$sel</span>);
</span><span id="707" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$sel</span> <span class="php-keyword1">as</span> &amp;<span class="php-var">$a</span>) {
</span><span id="708" class="l">           <span class="php-var">$a</span> = <span class="php-keyword2">preg_split</span>(<span class="php-quote">'|\\s+|'</span>, <span class="php-var">$a</span>);
</span><span id="709" class="l">           <span class="php-keyword1">foreach</span>(<span class="php-var">$a</span> <span class="php-keyword1">as</span> &amp;<span class="php-var">$b</span>) {
</span><span id="710" class="l">              <span class="php-var">$b</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">'&gt;'</span>, <span class="php-var">$b</span>);
</span><span id="711" class="l">              <span class="php-keyword1">foreach</span>(<span class="php-var">$b</span> <span class="php-keyword1">as</span> &amp;<span class="php-var">$c</span>) {
</span><span id="712" class="l">                 <span class="php-var">$d</span> = <span class="php-var">$def</span>;
</span><span id="713" class="l">                 <span class="php-var">$l</span> = <span class="php-keyword2">strlen</span>(<span class="php-var">$c</span>);
</span><span id="714" class="l">                 <span class="php-var">$j</span> = <span class="php-keyword2">strcspn</span>(<span class="php-var">$c</span>, <span class="php-var">$sc</span>, <span class="php-num">0</span>, <span class="php-var">$l</span>);
</span><span id="715" class="l">                 <span class="php-keyword1">if</span>(<span class="php-var">$j</span>) <span class="php-var">$d</span>[<span class="php-quote">'n'</span>] = <span class="php-keyword2">substr</span>(<span class="php-var">$c</span>, <span class="php-num">0</span>, <span class="php-var">$j</span>);
</span><span id="716" class="l">                 <span class="php-var">$i</span> = <span class="php-var">$j</span>;
</span><span id="717" class="l">                 <span class="php-keyword1">while</span>(<span class="php-var">$i</span>&lt;<span class="php-var">$l</span>) {
</span><span id="718" class="l">                    <span class="php-var">$k</span> = <span class="php-var">$c</span>[<span class="php-var">$i</span>++];
</span><span id="719" class="l">                    <span class="php-var">$j</span> = <span class="php-keyword2">strcspn</span>(<span class="php-var">$c</span>, <span class="php-var">$sc</span>, <span class="php-var">$i</span>, <span class="php-var">$l</span>);
</span><span id="720" class="l">                    <span class="php-keyword1">if</span>(<span class="php-var">$j</span>) {
</span><span id="721" class="l">                       <span class="php-var">$e</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$c</span>, <span class="php-var">$i</span>, <span class="php-var">$j</span>);
</span><span id="722" class="l">                       <span class="php-keyword1">switch</span>(<span class="php-var">$k</span>) {
</span><span id="723" class="l">                          <span class="php-keyword1">case</span> <span class="php-quote">'.'</span>: <span class="php-var">$d</span>[<span class="php-quote">'c'</span>][] = <span class="php-var">$e</span>; <span class="php-keyword1">break</span>;
</span><span id="724" class="l">                          <span class="php-keyword1">case</span> <span class="php-quote">'#'</span>: <span class="php-var">$d</span>[<span class="php-quote">'i'</span>]   = <span class="php-var">$e</span>; <span class="php-keyword1">break</span>;
</span><span id="725" class="l">                          <span class="php-keyword1">case</span> <span class="php-quote">':'</span>: <span class="php-var">$d</span>[<span class="php-quote">'p'</span>][] = self::html_normal_pseudoClass(<span class="php-var">$e</span>); <span class="php-keyword1">break</span>;
</span><span id="726" class="l">                       }
</span><span id="727" class="l">                       <span class="php-var">$i</span>+=<span class="php-var">$j</span>;
</span><span id="728" class="l">                    }
</span><span id="729" class="l">                 }
</span><span id="730" class="l">                 <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$d</span>[<span class="php-quote">'c'</span>])) <span class="php-var">$d</span>[<span class="php-quote">'c'</span>] = <span class="php-var">$n</span>;
</span><span id="731" class="l">                 <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$d</span>[<span class="php-quote">'p'</span>])) <span class="php-var">$d</span>[<span class="php-quote">'p'</span>] = <span class="php-var">$n</span>;
</span><span id="732" class="l">                 <span class="php-var">$c</span> = <span class="php-var">$d</span>;
</span><span id="733" class="l">              }
</span><span id="734" class="l">           }
</span><span id="735" class="l">        }
</span><span id="736" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$sel</span>;
</span><span id="737" class="l">    }
</span><span id="738" class="l">
</span><span id="739" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="740" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> html_findTagClose(<span class="php-var">$str</span>, <span class="php-var">$p</span>) {
</span><span id="741" class="l">        <span class="php-var">$l</span> = <span class="php-keyword2">strlen</span>(<span class="php-var">$str</span>);
</span><span id="742" class="l">        <span class="php-keyword1">while</span> ( <span class="php-var">$i</span> = <span class="php-var">$p</span> &lt; <span class="php-var">$l</span> ? <span class="php-keyword2">strpos</span>(<span class="php-var">$str</span>, <span class="php-quote">'&gt;'</span>, <span class="php-var">$p</span>) : <span class="php-var">$l</span> ) {
</span><span id="743" class="l">            <span class="php-var">$e</span> = <span class="php-var">$p</span>; <span class="php-comment">// save pos</span>
</span><span id="744" class="l">            <span class="php-var">$p</span> += <span class="php-keyword2">strcspn</span>(<span class="php-var">$str</span>, <span class="php-quote">'&quot;\''</span>, <span class="php-var">$p</span>, <span class="php-var">$i</span>);
</span><span id="745" class="l">
</span><span id="746" class="l">            <span class="php-comment">// If closest quote is after '&gt;', return pos of '&gt;'</span>
</span><span id="747" class="l">            <span class="php-keyword1">if</span> ( <span class="php-var">$p</span> &gt;= <span class="php-var">$i</span> ) <span class="php-keyword1">return</span> <span class="php-var">$i</span>;
</span><span id="748" class="l">
</span><span id="749" class="l">            <span class="php-comment">// If there is any quote before '&gt;', make sure '&gt;' is outside an attribute string</span>
</span><span id="750" class="l">            <span class="php-var">$q</span> = <span class="php-var">$str</span>[<span class="php-var">$p</span>]; <span class="php-comment">// &quot; | ' ?</span>
</span><span id="751" class="l">            ++<span class="php-var">$p</span>; <span class="php-comment">// next char after the quote</span>
</span><span id="752" class="l">
</span><span id="753" class="l">            <span class="php-var">$e</span> += <span class="php-keyword2">strcspn</span>(<span class="php-var">$str</span>, <span class="php-quote">'='</span>, <span class="php-var">$e</span>, <span class="php-var">$p</span>); <span class="php-comment">// is there a '=' before first quote?</span>
</span><span id="754" class="l">
</span><span id="755" class="l">            <span class="php-comment">// is this the attr_name (like in &quot;attr_name&quot;=&quot;attr_value&quot;) ?</span>
</span><span id="756" class="l">            <span class="php-keyword1">if</span> ( <span class="php-var">$e</span> &gt;= <span class="php-var">$p</span> ) {
</span><span id="757" class="l">                <span class="php-comment">// Attribute name should not have '&gt;'</span>
</span><span id="758" class="l">                <span class="php-var">$p</span> += <span class="php-keyword2">strcspn</span>(<span class="php-var">$str</span>, <span class="php-quote">'&gt;'</span> . <span class="php-var">$q</span>, <span class="php-var">$p</span>, <span class="php-var">$l</span>);
</span><span id="759" class="l">                <span class="php-comment">// but if it has '&gt;', it is the tag closing char</span>
</span><span id="760" class="l">                <span class="php-keyword1">if</span> ( <span class="php-var">$str</span>[<span class="php-var">$p</span>] == <span class="php-quote">'&gt;'</span> ) <span class="php-keyword1">return</span> <span class="php-var">$p</span>;
</span><span id="761" class="l">            }
</span><span id="762" class="l">            <span class="php-comment">// else, its attr_value</span>
</span><span id="763" class="l">            <span class="php-keyword1">else</span> {
</span><span id="764" class="l">                <span class="php-var">$p</span> += <span class="php-keyword2">strcspn</span>(<span class="php-var">$str</span>, <span class="php-var">$q</span>, <span class="php-var">$p</span>, <span class="php-var">$l</span>);
</span><span id="765" class="l">            }
</span><span id="766" class="l">
</span><span id="767" class="l">            ++<span class="php-var">$p</span>; <span class="php-comment">// next char after the quote</span>
</span><span id="768" class="l">        }
</span><span id="769" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$i</span>;
</span><span id="770" class="l">    }
</span><span id="771" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="772" class="l">    <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> html_parseAttrStr(<span class="php-var">$str</span>, <span class="php-var">$case_folding</span> = <span class="php-keyword1">true</span>, <span class="php-var">$extended</span> = <span class="php-keyword1">false</span>) {
</span><span id="773" class="l">        <span class="php-keyword1">static</span> <span class="php-var">$_attrName_firstLet</span> = <span class="php-keyword1">NULL</span>;
</span><span id="774" class="l">        <span class="php-keyword1">if</span>(!<span class="php-var">$_attrName_firstLet</span>) <span class="php-var">$_attrName_firstLet</span> = self::str_range(<span class="php-quote">'a-zA-Z_'</span>);
</span><span id="775" class="l">
</span><span id="776" class="l">        <span class="php-var">$ret</span> = <span class="php-keyword1">array</span>();
</span><span id="777" class="l">        <span class="php-keyword1">for</span>(<span class="php-var">$i</span> = <span class="php-keyword2">strspn</span>(<span class="php-var">$str</span>, <span class="php-quote">&quot; \t\n\r&quot;</span>), <span class="php-var">$len</span> = <span class="php-keyword2">strlen</span>(<span class="php-var">$str</span>); <span class="php-var">$i</span> &lt; <span class="php-var">$len</span>;) {
</span><span id="778" class="l">           <span class="php-var">$i</span> += <span class="php-keyword2">strcspn</span>(<span class="php-var">$str</span>, <span class="php-var">$_attrName_firstLet</span>, <span class="php-var">$i</span>);
</span><span id="779" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$i</span>&gt;=<span class="php-var">$len</span>) <span class="php-keyword1">break</span>;
</span><span id="780" class="l">           <span class="php-var">$b</span> = <span class="php-var">$i</span>;
</span><span id="781" class="l">           <span class="php-var">$i</span> += <span class="php-keyword2">strcspn</span>(<span class="php-var">$str</span>, <span class="php-quote">&quot; \t\n\r=\&quot;\'&quot;</span>, <span class="php-var">$i</span>);
</span><span id="782" class="l">           <span class="php-var">$attrName</span> = <span class="php-keyword2">rtrim</span>(<span class="php-keyword2">substr</span>(<span class="php-var">$str</span>, <span class="php-var">$b</span>, <span class="php-var">$i</span>-<span class="php-var">$b</span>));
</span><span id="783" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$case_folding</span>) <span class="php-var">$attrName</span> = <span class="php-keyword2">strtolower</span>(<span class="php-var">$attrName</span>);
</span><span id="784" class="l">           <span class="php-var">$i</span> += <span class="php-keyword2">strspn</span>(<span class="php-var">$str</span>, <span class="php-quote">&quot; \t\n\r&quot;</span>, <span class="php-var">$i</span>);
</span><span id="785" class="l">           <span class="php-var">$attrValue</span> = <span class="php-keyword1">NULL</span>;
</span><span id="786" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$i</span>&lt;<span class="php-var">$len</span> &amp;&amp; <span class="php-var">$str</span>[<span class="php-var">$i</span>]==<span class="php-quote">'='</span>) {
</span><span id="787" class="l">             ++<span class="php-var">$i</span>;
</span><span id="788" class="l">             <span class="php-var">$i</span> += <span class="php-keyword2">strspn</span>(<span class="php-var">$str</span>, <span class="php-quote">&quot; \t\n\r&quot;</span>, <span class="php-var">$i</span>);
</span><span id="789" class="l">             <span class="php-keyword1">if</span>(<span class="php-var">$i</span> &lt; <span class="php-var">$len</span>) {
</span><span id="790" class="l">               <span class="php-var">$q</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$str</span>, <span class="php-var">$i</span>, <span class="php-num">1</span>);
</span><span id="791" class="l">               <span class="php-keyword1">if</span>(<span class="php-var">$q</span>==<span class="php-quote">'&quot;'</span> || <span class="php-var">$q</span>==<span class="php-quote">&quot;'&quot;</span>) {
</span><span id="792" class="l">                  <span class="php-var">$b</span> = ++<span class="php-var">$i</span>;
</span><span id="793" class="l">                  <span class="php-var">$e</span> = <span class="php-keyword2">strpos</span>(<span class="php-var">$str</span>, <span class="php-var">$q</span>, <span class="php-var">$i</span>);
</span><span id="794" class="l">                  <span class="php-keyword1">if</span>(<span class="php-var">$e</span> !== <span class="php-keyword1">false</span>) {
</span><span id="795" class="l">                     <span class="php-var">$attrValue</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$str</span>, <span class="php-var">$b</span>, <span class="php-var">$e</span>-<span class="php-var">$b</span>);
</span><span id="796" class="l">                     <span class="php-var">$i</span> = <span class="php-var">$e</span>+<span class="php-num">1</span>;
</span><span id="797" class="l">                  }
</span><span id="798" class="l">                  <span class="php-keyword1">else</span> {
</span><span id="799" class="l">                     <span class="php-comment">/*??? no closing quote */</span>
</span><span id="800" class="l">                  }
</span><span id="801" class="l">               }
</span><span id="802" class="l">               <span class="php-keyword1">else</span> {
</span><span id="803" class="l">                  <span class="php-var">$b</span> = <span class="php-var">$i</span>;
</span><span id="804" class="l">                  <span class="php-var">$i</span> += <span class="php-keyword2">strcspn</span>(<span class="php-var">$str</span>, <span class="php-quote">&quot; \t\n\r\&quot;\'&quot;</span>, <span class="php-var">$i</span>);
</span><span id="805" class="l">                  <span class="php-var">$attrValue</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$str</span>, <span class="php-var">$b</span>, <span class="php-var">$i</span>-<span class="php-var">$b</span>);
</span><span id="806" class="l">               }
</span><span id="807" class="l">             }
</span><span id="808" class="l">           }
</span><span id="809" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$extended</span> &amp;&amp; <span class="php-var">$attrValue</span>) <span class="php-keyword1">switch</span>(<span class="php-var">$case_folding</span> ? <span class="php-var">$attrName</span> : <span class="php-keyword2">strtolower</span>(<span class="php-var">$attrName</span>)) {
</span><span id="810" class="l">              <span class="php-keyword1">case</span> <span class="php-quote">'class'</span>:
</span><span id="811" class="l">                <span class="php-var">$attrValue</span> = <span class="php-keyword2">preg_split</span>(<span class="php-quote">&quot;|\\s+|&quot;</span>, <span class="php-keyword2">trim</span>(<span class="php-var">$attrValue</span>));
</span><span id="812" class="l">                <span class="php-keyword1">if</span>(<span class="php-keyword2">count</span>(<span class="php-var">$attrValue</span>) == <span class="php-num">1</span>) <span class="php-var">$attrValue</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$attrValue</span>);
</span><span id="813" class="l">                <span class="php-keyword1">else</span> <span class="php-keyword2">sort</span>(<span class="php-var">$attrValue</span>);
</span><span id="814" class="l">                <span class="php-keyword1">break</span>;
</span><span id="815" class="l">
</span><span id="816" class="l">              <span class="php-keyword1">case</span> <span class="php-quote">'style'</span>:
</span><span id="817" class="l">                <span class="php-var">$attrValue</span> = self::parseCSStr(<span class="php-var">$attrValue</span>, <span class="php-var">$case_folding</span>);
</span><span id="818" class="l">                <span class="php-keyword1">break</span>;
</span><span id="819" class="l">           }
</span><span id="820" class="l">
</span><span id="821" class="l">           <span class="php-var">$ret</span>[<span class="php-var">$attrName</span>] = <span class="php-var">$attrValue</span>;
</span><span id="822" class="l">        }
</span><span id="823" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="824" class="l">    }
</span><span id="825" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="826" class="l">    <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> html_attr2str(<span class="php-var">$attr</span>, <span class="php-var">$quote</span>=<span class="php-quote">'&quot;'</span>) {
</span><span id="827" class="l">        <span class="php-var">$sq</span> = <span class="php-keyword2">htmlspecialchars</span>(<span class="php-var">$quote</span>);
</span><span id="828" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$sq</span> == <span class="php-var">$quote</span>) <span class="php-var">$sq</span> = <span class="php-keyword1">false</span>;
</span><span id="829" class="l">        <span class="php-keyword2">ksort</span>(<span class="php-var">$attr</span>);
</span><span id="830" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$attr</span>[<span class="php-quote">'class'</span>]) &amp;&amp; <span class="php-keyword2">is_array</span>(<span class="php-var">$attr</span>[<span class="php-quote">'class'</span>])) {
</span><span id="831" class="l">            <span class="php-keyword2">sort</span>(<span class="php-var">$attr</span>[<span class="php-quote">'class'</span>]);
</span><span id="832" class="l">            <span class="php-var">$attr</span>[<span class="php-quote">'class'</span>] = <span class="php-keyword2">implode</span>(<span class="php-quote">' '</span>, <span class="php-var">$attr</span>[<span class="php-quote">'class'</span>]);
</span><span id="833" class="l">        }
</span><span id="834" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$attr</span>[<span class="php-quote">'style'</span>]) &amp;&amp; <span class="php-keyword2">is_array</span>(<span class="php-var">$attr</span>[<span class="php-quote">'style'</span>])) {
</span><span id="835" class="l">            <span class="php-var">$attr</span>[<span class="php-quote">'style'</span>] = self::CSSArr2Str(<span class="php-var">$attr</span>[<span class="php-quote">'style'</span>]);
</span><span id="836" class="l">        }
</span><span id="837" class="l">        <span class="php-var">$ret</span> = <span class="php-keyword1">array</span>();
</span><span id="838" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$attr</span> <span class="php-keyword1">as</span> <span class="php-var">$n</span> =&gt; <span class="php-var">$v</span>) {
</span><span id="839" class="l">            <span class="php-var">$ret</span>[] = <span class="php-var">$n</span> . <span class="php-quote">'='</span> . <span class="php-var">$quote</span> . (<span class="php-var">$sq</span> ? <span class="php-keyword2">str_replace</span>(<span class="php-var">$quote</span>, <span class="php-var">$sq</span>, <span class="php-var">$v</span>) : <span class="php-var">$v</span>) . <span class="php-var">$quote</span>;
</span><span id="840" class="l">        }
</span><span id="841" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword2">implode</span>(<span class="php-quote">' '</span>, <span class="php-var">$ret</span>);
</span><span id="842" class="l">    }
</span><span id="843" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="844" class="l">    <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> parseCSStr(<span class="php-var">$str</span>, <span class="php-var">$case_folding</span> = <span class="php-keyword1">true</span>) {
</span><span id="845" class="l">        <span class="php-var">$ret</span> = <span class="php-keyword1">array</span>();
</span><span id="846" class="l">        <span class="php-var">$a</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">';'</span>, <span class="php-var">$str</span>); <span class="php-comment">// ??? what if ; in &quot;&quot; ?</span>
</span><span id="847" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$a</span> <span class="php-keyword1">as</span> <span class="php-var">$v</span>) {
</span><span id="848" class="l">            <span class="php-var">$v</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">':'</span>, <span class="php-var">$v</span>, <span class="php-num">2</span>);
</span><span id="849" class="l">            <span class="php-var">$n</span> = <span class="php-keyword2">trim</span>(<span class="php-keyword2">reset</span>(<span class="php-var">$v</span>));
</span><span id="850" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$case_folding</span>) <span class="php-var">$n</span> = <span class="php-keyword2">strtolower</span>(<span class="php-var">$n</span>);
</span><span id="851" class="l">            <span class="php-var">$ret</span>[<span class="php-var">$n</span>] = <span class="php-keyword2">count</span>(<span class="php-var">$v</span>) == <span class="php-num">2</span> ? <span class="php-keyword2">trim</span>(<span class="php-keyword2">end</span>(<span class="php-var">$v</span>)) : <span class="php-keyword1">NULL</span>;
</span><span id="852" class="l">        }
</span><span id="853" class="l">        <span class="php-keyword1">unset</span>(<span class="php-var">$ret</span>[<span class="php-quote">''</span>]);
</span><span id="854" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="855" class="l">    }
</span><span id="856" class="l">
</span><span id="857" class="l">    <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> CSSArr2Str(<span class="php-var">$css</span>) {
</span><span id="858" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$css</span>)) {
</span><span id="859" class="l">            <span class="php-keyword2">ksort</span>(<span class="php-var">$css</span>);
</span><span id="860" class="l">            <span class="php-var">$ret</span> = <span class="php-keyword1">array</span>();
</span><span id="861" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$css</span> <span class="php-keyword1">as</span> <span class="php-var">$n</span> =&gt; <span class="php-var">$v</span>) <span class="php-var">$ret</span>[] = <span class="php-var">$n</span>.<span class="php-quote">':'</span>.<span class="php-var">$v</span>;
</span><span id="862" class="l">            <span class="php-keyword1">return</span> <span class="php-keyword2">implode</span>(<span class="php-quote">';'</span>, <span class="php-var">$ret</span>);
</span><span id="863" class="l">        }
</span><span id="864" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$css</span>;
</span><span id="865" class="l">    }
</span><span id="866" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="867" class="l">    <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> str_range(<span class="php-var">$comp</span>, <span class="php-var">$pos</span>=<span class="php-num">0</span>, <span class="php-var">$len</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="868" class="l">        <span class="php-var">$ret</span> = <span class="php-keyword1">array</span>();
</span><span id="869" class="l">        <span class="php-var">$b</span> = <span class="php-keyword2">strlen</span>(<span class="php-var">$comp</span>);
</span><span id="870" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$len</span>) || <span class="php-var">$len</span> &gt; <span class="php-var">$b</span>) <span class="php-var">$len</span> = <span class="php-var">$b</span>;
</span><span id="871" class="l">        <span class="php-var">$b</span> = <span class="php-quote">&quot;\x0&quot;</span>;
</span><span id="872" class="l">        <span class="php-keyword1">while</span>(<span class="php-var">$pos</span> &lt; <span class="php-var">$len</span>) {
</span><span id="873" class="l">            <span class="php-keyword1">switch</span>(<span class="php-var">$c</span> = <span class="php-var">$comp</span>[<span class="php-var">$pos</span>++]) {
</span><span id="874" class="l">                <span class="php-keyword1">case</span> <span class="php-quote">'\\'</span>: {
</span><span id="875" class="l">                    <span class="php-var">$b</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$comp</span>, <span class="php-var">$pos</span>, <span class="php-num">1</span>);
</span><span id="876" class="l">                    <span class="php-var">$ret</span>[<span class="php-var">$b</span>] = <span class="php-var">$pos</span>++;
</span><span id="877" class="l">                } <span class="php-keyword1">break</span>;
</span><span id="878" class="l">
</span><span id="879" class="l">                <span class="php-keyword1">case</span> <span class="php-quote">'-'</span>: {
</span><span id="880" class="l">                    <span class="php-var">$c_</span> = <span class="php-keyword2">ord</span>(<span class="php-var">$c</span>=<span class="php-keyword2">substr</span>(<span class="php-var">$comp</span>, <span class="php-var">$pos</span>, <span class="php-num">1</span>));
</span><span id="881" class="l">                    <span class="php-var">$b</span> = <span class="php-keyword2">ord</span>(<span class="php-var">$b</span>);
</span><span id="882" class="l">                    <span class="php-keyword1">while</span>(<span class="php-var">$b</span>++ &lt; <span class="php-var">$c_</span>) <span class="php-var">$ret</span>[<span class="php-keyword2">chr</span>(<span class="php-var">$b</span>)] = <span class="php-var">$pos</span>;
</span><span id="883" class="l">                    <span class="php-keyword1">while</span>(<span class="php-var">$b</span>-- &gt; <span class="php-var">$c_</span>) <span class="php-var">$ret</span>[<span class="php-keyword2">chr</span>(<span class="php-var">$b</span>)] = <span class="php-var">$pos</span>;
</span><span id="884" class="l">                } <span class="php-keyword1">break</span>;
</span><span id="885" class="l">
</span><span id="886" class="l">                <span class="php-keyword1">default</span>: {
</span><span id="887" class="l">                    <span class="php-var">$ret</span>[<span class="php-var">$b</span>=<span class="php-var">$c</span>] = <span class="php-var">$pos</span>;
</span><span id="888" class="l">                }
</span><span id="889" class="l">            }
</span><span id="890" class="l">        }
</span><span id="891" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword2">implode</span>(<span class="php-quote">''</span>, <span class="php-keyword2">array_keys</span>(<span class="php-var">$ret</span>));
</span><span id="892" class="l">    }
</span><span id="893" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="894" class="l">    <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> array_select(<span class="php-var">$arr</span>, <span class="php-var">$keys</span>, <span class="php-var">$force_null</span>=<span class="php-keyword1">false</span>) {
</span><span id="895" class="l">        <span class="php-var">$ret</span> = <span class="php-keyword1">array</span>();
</span><span id="896" class="l">        <span class="php-keyword2">is_array</span>(<span class="php-var">$keys</span>) <span class="php-keyword1">or</span> <span class="php-keyword2">is_object</span>(<span class="php-var">$keys</span>) <span class="php-keyword1">or</span> <span class="php-var">$keys</span> = <span class="php-keyword1">array</span>(<span class="php-var">$keys</span>);
</span><span id="897" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$keys</span> <span class="php-keyword1">as</span> <span class="php-var">$k</span>) {
</span><span id="898" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$arr</span>[<span class="php-var">$k</span>])) <span class="php-var">$ret</span>[<span class="php-var">$k</span>] = <span class="php-var">$arr</span>[<span class="php-var">$k</span>];
</span><span id="899" class="l">            <span class="php-keyword1">elseif</span>(<span class="php-var">$force_null</span>) <span class="php-var">$ret</span>[<span class="php-var">$k</span>] = <span class="php-keyword1">NULL</span>;
</span><span id="900" class="l">        }
</span><span id="901" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="902" class="l">    }
</span><span id="903" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="904" class="l">    <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> convert_encoding(<span class="php-var">$a</span>, <span class="php-var">$to</span>, <span class="php-var">$from</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="905" class="l">        <span class="php-keyword1">static</span> <span class="php-var">$meth</span> = <span class="php-keyword1">NULL</span>;
</span><span id="906" class="l">        <span class="php-keyword1">isset</span>(<span class="php-var">$meth</span>) <span class="php-keyword1">or</span> <span class="php-var">$meth</span> = <span class="php-keyword2">function_exists</span>(<span class="php-quote">'mb_convert_encoding'</span>);
</span><span id="907" class="l">        <span class="php-keyword1">isset</span>(<span class="php-var">$from</span>) <span class="php-keyword1">or</span> <span class="php-var">$from</span> = <span class="php-var">$meth</span> ? <span class="php-keyword2">mb_internal_encoding</span>() : <span class="php-keyword2">iconv_get_encoding</span>(<span class="php-quote">'internal_encoding'</span>);
</span><span id="908" class="l">
</span><span id="909" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$a</span>)) {
</span><span id="910" class="l">            <span class="php-var">$ret</span> = <span class="php-keyword1">array</span>();
</span><span id="911" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$a</span> <span class="php-keyword1">as</span> <span class="php-var">$n</span> =&gt; <span class="php-var">$v</span>) {
</span><span id="912" class="l">                <span class="php-var">$ret</span>[<span class="php-keyword2">is_string</span>(<span class="php-var">$n</span>)?self::convert_encoding(<span class="php-var">$n</span>,<span class="php-var">$to</span>,<span class="php-var">$from</span>):<span class="php-var">$n</span>] = <span class="php-keyword2">is_string</span>(<span class="php-var">$v</span>) || <span class="php-keyword2">is_array</span>(<span class="php-var">$v</span>) || <span class="php-var">$v</span> <span class="php-keyword1">instanceof</span> stdClass
</span><span id="913" class="l">                    ? self::convert_encoding(<span class="php-var">$v</span>, <span class="php-var">$to</span>, <span class="php-var">$from</span>)
</span><span id="914" class="l">                    : <span class="php-var">$v</span>;
</span><span id="915" class="l">            }
</span><span id="916" class="l">            <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="917" class="l">        }
</span><span id="918" class="l">        <span class="php-keyword1">elseif</span>(<span class="php-var">$a</span> <span class="php-keyword1">instanceof</span> stdClass) {
</span><span id="919" class="l">            <span class="php-var">$ret</span> = (object)<span class="php-keyword1">array</span>();
</span><span id="920" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$a</span> <span class="php-keyword1">as</span> <span class="php-var">$n</span> =&gt; <span class="php-var">$v</span>) {
</span><span id="921" class="l">                <span class="php-var">$ret</span>-&gt;{<span class="php-keyword2">is_string</span>(<span class="php-var">$n</span>)?self::convert_encoding(<span class="php-var">$n</span>,<span class="php-var">$to</span>,<span class="php-var">$from</span>):<span class="php-var">$n</span>} = <span class="php-keyword2">is_string</span>(<span class="php-var">$v</span>) || <span class="php-keyword2">is_array</span>(<span class="php-var">$v</span>) || <span class="php-var">$v</span> <span class="php-keyword1">instanceof</span> stdClass
</span><span id="922" class="l">                    ? self::convert_encoding(<span class="php-var">$v</span>, <span class="php-var">$to</span>, <span class="php-var">$from</span>)
</span><span id="923" class="l">                    : <span class="php-var">$v</span>;
</span><span id="924" class="l">            }
</span><span id="925" class="l">            <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="926" class="l">        }
</span><span id="927" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword2">is_string</span>(<span class="php-var">$a</span>) ? <span class="php-var">$meth</span> ? <span class="php-keyword2">mb_convert_encoding</span>(<span class="php-var">$a</span>, <span class="php-var">$to</span>, <span class="php-var">$from</span>) : <span class="php-keyword2">iconv</span>(<span class="php-var">$from</span>, <span class="php-var">$to</span>, <span class="php-var">$a</span>) : <span class="php-var">$a</span>;
</span><span id="928" class="l">    }
</span><span id="929" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="930" class="l">}
</span><span id="931" class="l"><span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="932" class="l">
</span><span id="933" class="l"><span class="php-comment">/**
</span></span><span id="934" class="l"><span class="php-comment"> *  A context is a list of node addresses with reference to their document.
</span></span><span id="935" class="l"><span class="php-comment"> *
</span></span><span id="936" class="l"><span class="php-comment"> *  @internal
</span></span><span id="937" class="l"><span class="php-comment"> */</span>
</span><span id="938" class="l"><span class="php-keyword1">class</span> hQuery_Context <span class="php-keyword1">extends</span> hQuery_Node {
</span><span id="939" class="l">
</span><span id="940" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> __construct(<span class="php-var">$doc</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$el_arr</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="941" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$el_arr</span> <span class="php-keyword1">instanceof</span> parent) {
</span><span id="942" class="l">           <span class="php-keyword1">if</span>(!<span class="php-var">$doc</span>) <span class="php-var">$doc</span> = <span class="php-var">$el_arr</span>-&gt;doc();
</span><span id="943" class="l">           <span class="php-var">$el_arr</span> = <span class="php-var">$el_arr</span>-&gt;ids;
</span><span id="944" class="l">        }
</span><span id="945" class="l">        <span class="php-keyword1">elseif</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$el_arr</span>)) {
</span><span id="946" class="l">            <span class="php-keyword2">ksort</span>(<span class="php-var">$el_arr</span>);
</span><span id="947" class="l">        }
</span><span id="948" class="l">        parent::__construct(<span class="php-var">$doc</span>, <span class="php-var">$el_arr</span>, <span class="php-keyword1">true</span>);
</span><span id="949" class="l">    }
</span><span id="950" class="l">
</span><span id="951" class="l">    <span class="php-comment">/**
</span></span><span id="952" class="l"><span class="php-comment">     *  ctx($el) * $this
</span></span><span id="953" class="l"><span class="php-comment">     *
</span></span><span id="954" class="l"><span class="php-comment">     *  @return hQuery_Context ctx
</span></span><span id="955" class="l"><span class="php-comment">     */</span>
</span><span id="956" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> intersect(<span class="php-var">$el</span>, <span class="php-var">$eq</span>=<span class="php-keyword1">true</span>) {
</span><span id="957" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$el</span> <span class="php-keyword1">instanceof</span> self) {
</span><span id="958" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$el</span> === <span class="php-var">$this</span>) {
</span><span id="959" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$eq</span>) <span class="php-keyword1">return</span> <span class="php-var">$this</span>;
</span><span id="960" class="l">                <span class="php-keyword1">else</span> <span class="php-var">$el</span> = <span class="php-keyword1">array</span>();
</span><span id="961" class="l">            }
</span><span id="962" class="l">            <span class="php-keyword1">else</span> {
</span><span id="963" class="l">                <span class="php-var">$el</span> = <span class="php-var">$el</span>-&gt;ids;
</span><span id="964" class="l">            }
</span><span id="965" class="l">        }
</span><span id="966" class="l">        <span class="php-keyword1">else</span> {
</span><span id="967" class="l">            <span class="php-var">$el</span> = <span class="php-var">$this</span>-&gt;_ctx_ids(<span class="php-var">$this</span>-&gt;_doc_ids(<span class="php-var">$el</span>, <span class="php-keyword1">true</span>));
</span><span id="968" class="l">        }
</span><span id="969" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$el</span> <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) {
</span><span id="970" class="l">            <span class="php-keyword1">if</span>(!<span class="php-var">$this</span>-&gt;has(<span class="php-var">$b</span>, <span class="php-var">$eq</span>)) <span class="php-keyword1">unset</span>(<span class="php-var">$el</span>[<span class="php-var">$b</span>]);
</span><span id="971" class="l">        }
</span><span id="972" class="l">
</span><span id="973" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword1">new</span> self(<span class="php-var">$el</span>, <span class="php-var">$this</span>-&gt;doc);
</span><span id="974" class="l">    }
</span><span id="975" class="l">}
</span><span id="976" class="l">
</span><span id="977" class="l"><span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="978" class="l"><span class="php-comment">/**
</span></span><span id="979" class="l"><span class="php-comment"> *  HTML Parser Class
</span></span><span id="980" class="l"><span class="php-comment"> *
</span></span><span id="981" class="l"><span class="php-comment"> *  used internally
</span></span><span id="982" class="l"><span class="php-comment"> */</span>
</span><span id="983" class="l"><span class="php-keyword1">class</span> hQuery_HTML_Parser <span class="php-keyword1">extends</span> hQuery_Node {
</span><span id="984" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-var">$del_spaces</span>          = <span class="php-keyword1">false</span>;
</span><span id="985" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-var">$case_folding</span>        = <span class="php-keyword1">true</span>;
</span><span id="986" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-var">$autoclose_tags</span>      = <span class="php-keyword1">false</span>; <span class="php-comment">// 1 - auto-close non-empty tags, 2 - auto-close all tags</span>
</span><span id="987" class="l">
</span><span id="988" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-var">$_emptyTags</span>          = <span class="php-keyword1">array</span>(<span class="php-quote">'base'</span>,<span class="php-quote">'meta'</span>,<span class="php-quote">'link'</span>,<span class="php-quote">'hr'</span>,<span class="php-quote">'br'</span>,<span class="php-quote">'basefont'</span>,<span class="php-quote">'param'</span>,<span class="php-quote">'img'</span>,<span class="php-quote">'area'</span>,<span class="php-quote">'input'</span>,<span class="php-quote">'isindex'</span>,<span class="php-quote">'col'</span>);
</span><span id="989" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-var">$_specialTags</span>        = <span class="php-keyword1">array</span>(<span class="php-quote">'--'</span>=&gt;<span class="php-quote">'--'</span>, <span class="php-quote">'[CDATA['</span>=&gt;<span class="php-quote">']]'</span>);
</span><span id="990" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-var">$_unparsedTags</span>       = <span class="php-keyword1">array</span>(<span class="php-quote">'style'</span>, <span class="php-quote">'script'</span>);
</span><span id="991" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-var">$_index_attribs</span>      = <span class="php-keyword1">array</span>(<span class="php-quote">'href'</span>, <span class="php-quote">'src'</span>);
</span><span id="992" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-var">$_url_attribs</span>        = <span class="php-keyword1">array</span>(<span class="php-quote">'href'</span>=&gt;<span class="php-quote">'href'</span>, <span class="php-quote">'src'</span>=&gt;<span class="php-quote">'src'</span>);
</span><span id="993" class="l">
</span><span id="994" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">static</span> <span class="php-var">$_tagID_first_letter</span> = <span class="php-quote">'a-zA-Z_'</span>;
</span><span id="995" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">static</span> <span class="php-var">$_tagID_letters</span>      = <span class="php-quote">'a-zA-Z_0-9:\-'</span>;
</span><span id="996" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">static</span> <span class="php-var">$_icharset</span>           = <span class="php-quote">'UTF-8'</span>; <span class="php-comment">// Internal charset</span>
</span><span id="997" class="l">
</span><span id="998" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$html</span> = <span class="php-quote">''</span>; <span class="php-comment">// html string</span>
</span><span id="999" class="l">
</span><span id="1000" class="l">    <span class="php-comment">// Indexed data</span>
</span><span id="1001" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$tags</span>          ; <span class="php-comment">// id        =&gt; nodeName</span>
</span><span id="1002" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$attrs</span>         ; <span class="php-comment">// id        =&gt; attrId</span>
</span><span id="1003" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$attribs</span>       ; <span class="php-comment">// attrId    =&gt; attrStr | attrArr</span>
</span><span id="1004" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$idx_attr</span>      ; <span class="php-comment">// attrName  =&gt; [id=&gt;attrVal]</span>
</span><span id="1005" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$tag_idx</span>       ; <span class="php-comment">// nodeNames =&gt; [ids]  , [ids] == [id =&gt; end]</span>
</span><span id="1006" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$attr_idx</span>      ; <span class="php-comment">// attrId    =&gt; id | [ids]</span>
</span><span id="1007" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$class_idx</span>     ; <span class="php-comment">// class     =&gt; aid | [aids=&gt;[ids]]</span>
</span><span id="1008" class="l">
</span><span id="1009" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$o</span> = <span class="php-keyword1">NULL</span>;
</span><span id="1010" class="l">
</span><span id="1011" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$indexed</span> = <span class="php-keyword1">false</span>; <span class="php-comment">// completely indexed</span>
</span><span id="1012" class="l">
</span><span id="1013" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="1014" class="l">    <span class="php-comment">// The magic of properties</span>
</span><span id="1015" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> __get(<span class="php-var">$name</span>) {
</span><span id="1016" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">array_key_exists</span>(<span class="php-var">$name</span>, <span class="php-var">$this</span>-&gt;_prop)) <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;_prop[<span class="php-var">$name</span>];
</span><span id="1017" class="l">        <span class="php-keyword1">switch</span>(<span class="php-var">$name</span>) {
</span><span id="1018" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'size'</span>:
</span><span id="1019" class="l">                <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;<span class="php-keyword2">strlen</span>();
</span><span id="1020" class="l">
</span><span id="1021" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'baseURI'</span>:
</span><span id="1022" class="l">                <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;baseURI();
</span><span id="1023" class="l">
</span><span id="1024" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'base_url'</span>:
</span><span id="1025" class="l">                <span class="php-keyword1">return</span> @<span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'baseURL'</span>];
</span><span id="1026" class="l">
</span><span id="1027" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'href'</span>:
</span><span id="1028" class="l">                <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;location();
</span><span id="1029" class="l">
</span><span id="1030" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'charset'</span>:
</span><span id="1031" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$this</span>-&gt;html) {
</span><span id="1032" class="l">                    <span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'charset'</span>] =
</span><span id="1033" class="l">                    <span class="php-var">$c</span> = self::detect_charset(<span class="php-var">$this</span>-&gt;html);
</span><span id="1034" class="l">                    <span class="php-keyword1">return</span> <span class="php-var">$c</span>;
</span><span id="1035" class="l">                }
</span><span id="1036" class="l">            <span class="php-keyword1">break</span>;
</span><span id="1037" class="l">        }
</span><span id="1038" class="l">    }
</span><span id="1039" class="l">
</span><span id="1040" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> __set(<span class="php-var">$name</span>, <span class="php-var">$value</span>) {
</span><span id="1041" class="l">        <span class="php-keyword1">switch</span>(<span class="php-var">$name</span>) {
</span><span id="1042" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'hostURL'</span>: <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;
</span><span id="1043" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'baseURI'</span>:
</span><span id="1044" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'base_url'</span>:
</span><span id="1045" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'baseURL'</span>:
</span><span id="1046" class="l">                <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;baseURI(<span class="php-var">$value</span>);
</span><span id="1047" class="l">
</span><span id="1048" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'location'</span>:
</span><span id="1049" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'href'</span>:
</span><span id="1050" class="l">                <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;location(<span class="php-var">$value</span>);
</span><span id="1051" class="l">        }
</span><span id="1052" class="l">
</span><span id="1053" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$value</span>)) <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;_prop[<span class="php-var">$name</span>] = <span class="php-var">$value</span>;
</span><span id="1054" class="l">        <span class="php-var">$this</span>-&gt;__unset(<span class="php-var">$name</span>);
</span><span id="1055" class="l">    }
</span><span id="1056" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="1057" class="l">
</span><span id="1058" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> location(<span class="php-var">$href</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="1059" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">func_num_args</span>() &lt; <span class="php-num">1</span>) {
</span><span id="1060" class="l">            <span class="php-keyword1">return</span> @<span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'location'</span>][<span class="php-quote">'href'</span>];
</span><span id="1061" class="l">        }
</span><span id="1062" class="l">        <span class="php-keyword1">else</span> {
</span><span id="1063" class="l">            <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'baseURI'</span>])) {
</span><span id="1064" class="l">                <span class="php-var">$this</span>-&gt;baseURI(<span class="php-var">$href</span>);
</span><span id="1065" class="l">            }
</span><span id="1066" class="l">            <span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'location'</span>][<span class="php-quote">'href'</span>] = <span class="php-var">$href</span>;
</span><span id="1067" class="l">        }
</span><span id="1068" class="l">        <span class="php-keyword1">return</span> ;
</span><span id="1069" class="l">    }
</span><span id="1070" class="l">
</span><span id="1071" class="l">    <span class="php-comment">/// get/set baseURI</span>
</span><span id="1072" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> baseURI(<span class="php-var">$href</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="1073" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">func_num_args</span>() &lt; <span class="php-num">1</span>) {
</span><span id="1074" class="l">            <span class="php-var">$href</span> = @<span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'baseURI'</span>];
</span><span id="1075" class="l">        }
</span><span id="1076" class="l">        <span class="php-keyword1">else</span> {
</span><span id="1077" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$href</span>) {
</span><span id="1078" class="l">                <span class="php-var">$t</span> = self::get_url_base(<span class="php-var">$href</span>, <span class="php-keyword1">true</span>);
</span><span id="1079" class="l">                <span class="php-keyword1">if</span>(!<span class="php-var">$t</span>) <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;
</span><span id="1080" class="l">                <span class="php-keyword1">list</span>(<span class="php-var">$bh</span>, <span class="php-var">$bu</span>) = <span class="php-var">$t</span>;
</span><span id="1081" class="l">            }
</span><span id="1082" class="l">            <span class="php-keyword1">else</span> {
</span><span id="1083" class="l">                <span class="php-var">$bh</span> = <span class="php-var">$bu</span> = <span class="php-keyword1">NULL</span>;
</span><span id="1084" class="l">            }
</span><span id="1085" class="l">            <span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'hostURL'</span>] = <span class="php-var">$bh</span>;
</span><span id="1086" class="l">            <span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'baseURL'</span>] = <span class="php-var">$bu</span>;
</span><span id="1087" class="l">            <span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'baseURI'</span>] = <span class="php-var">$href</span>;
</span><span id="1088" class="l">        }
</span><span id="1089" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$href</span>;
</span><span id="1090" class="l">
</span><span id="1091" class="l">    }
</span><span id="1092" class="l">
</span><span id="1093" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> __construct(<span class="php-var">$html</span>, <span class="php-var">$idx</span>=<span class="php-keyword1">true</span>) {
</span><span id="1094" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword2">is_string</span>(<span class="php-var">$html</span>)) <span class="php-var">$html</span> = (string)<span class="php-var">$html</span>;
</span><span id="1095" class="l">        <span class="php-var">$c</span> = self::detect_charset(<span class="php-var">$html</span>) <span class="php-keyword1">or</span> <span class="php-var">$c</span> = <span class="php-keyword1">NULL</span>;
</span><span id="1096" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$c</span>) {
</span><span id="1097" class="l">            <span class="php-var">$ic</span> = self::<span class="php-var">$_icharset</span>;
</span><span id="1098" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$c</span> != <span class="php-var">$ic</span>) <span class="php-var">$html</span> = self::convert_encoding(<span class="php-var">$html</span>, <span class="php-var">$ic</span>, <span class="php-var">$c</span>);
</span><span id="1099" class="l">        }
</span><span id="1100" class="l">        <span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'charset'</span>] = <span class="php-var">$c</span>;
</span><span id="1101" class="l">        <span class="php-keyword1">if</span>(self::<span class="php-var">$del_spaces</span>) {
</span><span id="1102" class="l">            <span class="php-var">$html</span> = <span class="php-keyword2">preg_replace</span>(<span class="php-quote">'#(&gt;)?\\s+(&lt;)?#'</span>, <span class="php-quote">'$1 $2'</span>, <span class="php-var">$html</span>); <span class="php-comment">// reduce the size</span>
</span><span id="1103" class="l">        }
</span><span id="1104" class="l">        <span class="php-var">$this</span>-&gt;tags = self::<span class="php-var">$_ar_</span>;
</span><span id="1105" class="l">        <span class="php-var">$l</span> = <span class="php-keyword2">strlen</span>(<span class="php-var">$html</span>);
</span><span id="1106" class="l">        parent::__construct(<span class="php-var">$this</span>, self::<span class="php-var">$_ar_</span>);
</span><span id="1107" class="l">        <span class="php-var">$this</span>-&gt;html = <span class="php-var">$html</span>;
</span><span id="1108" class="l">        <span class="php-keyword1">unset</span>(<span class="php-var">$html</span>);
</span><span id="1109" class="l">
</span><span id="1110" class="l">        <span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'baseURI'</span>] =
</span><span id="1111" class="l">        <span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'baseURL'</span>] =
</span><span id="1112" class="l">        <span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'hostURL'</span>] = <span class="php-keyword1">NULL</span>;
</span><span id="1113" class="l">
</span><span id="1114" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$this</span>-&gt;html &amp;&amp; <span class="php-var">$idx</span>) <span class="php-var">$this</span>-&gt;_index_all();
</span><span id="1115" class="l">    }
</span><span id="1116" class="l">
</span><span id="1117" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> __toString() { <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;html; }
</span><span id="1118" class="l">
</span><span id="1119" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> get_url_base(<span class="php-var">$url</span>, <span class="php-var">$array</span>=<span class="php-keyword1">false</span>) {
</span><span id="1120" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$ub</span> = self::get_url_path(<span class="php-var">$url</span>)) {
</span><span id="1121" class="l">            <span class="php-var">$up</span> = <span class="php-var">$ub</span>;
</span><span id="1122" class="l">            <span class="php-var">$q</span> = <span class="php-keyword2">strpos</span>(<span class="php-var">$up</span>, <span class="php-quote">'/'</span>, <span class="php-keyword2">strpos</span>(<span class="php-var">$up</span>, <span class="php-quote">'//'</span>)+<span class="php-num">2</span>);
</span><span id="1123" class="l">            <span class="php-var">$ub</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$up</span>, <span class="php-num">0</span>, <span class="php-var">$q</span>+<span class="php-num">1</span>);
</span><span id="1124" class="l">        }
</span><span id="1125" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$array</span> &amp;&amp; <span class="php-var">$ub</span> ? <span class="php-keyword1">array</span>(<span class="php-var">$ub</span>, <span class="php-var">$up</span>) : <span class="php-var">$ub</span>;
</span><span id="1126" class="l">    }
</span><span id="1127" class="l">
</span><span id="1128" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> get_url_path(<span class="php-var">$url</span>) {
</span><span id="1129" class="l">        <span class="php-var">$p</span> = <span class="php-keyword2">strpos</span>(<span class="php-var">$url</span>, <span class="php-quote">'//'</span>);
</span><span id="1130" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$p</span> === <span class="php-keyword1">false</span> || <span class="php-var">$p</span> &amp;&amp; !<span class="php-keyword2">preg_match</span>(<span class="php-quote">'|^[a-z]+\:$|'</span>, <span class="php-keyword2">substr</span>(<span class="php-var">$url</span>, <span class="php-num">0</span>, <span class="php-var">$p</span>))) <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;
</span><span id="1131" class="l">        <span class="php-var">$q</span> = <span class="php-keyword2">strrpos</span>(<span class="php-var">$url</span>, <span class="php-quote">'/'</span>);
</span><span id="1132" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$p</span>+<span class="php-num">1</span> &lt; <span class="php-var">$q</span>) {
</span><span id="1133" class="l">            <span class="php-var">$url</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$url</span>, <span class="php-num">0</span>, <span class="php-var">$q</span>+<span class="php-num">1</span>);
</span><span id="1134" class="l">        }
</span><span id="1135" class="l">        <span class="php-keyword1">else</span> {
</span><span id="1136" class="l">            <span class="php-var">$url</span> .= <span class="php-quote">'/'</span>;
</span><span id="1137" class="l">        }
</span><span id="1138" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$url</span>;
</span><span id="1139" class="l">    }
</span><span id="1140" class="l">
</span><span id="1141" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> url2abs(<span class="php-var">$url</span>) {
</span><span id="1142" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'baseURL'</span>]) &amp;&amp; !<span class="php-keyword2">preg_match</span>(<span class="php-quote">'|^([a-z]{1,20}:)?\/\/|'</span>, <span class="php-var">$url</span>)) {
</span><span id="1143" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$url</span>[<span class="php-num">0</span>] == <span class="php-quote">'/'</span>) { <span class="php-comment">// abs path</span>
</span><span id="1144" class="l">                <span class="php-var">$bu</span> = <span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'hostURL'</span>];
</span><span id="1145" class="l">                <span class="php-var">$url</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$url</span>, <span class="php-num">1</span>);
</span><span id="1146" class="l">            }
</span><span id="1147" class="l">            <span class="php-keyword1">else</span> {
</span><span id="1148" class="l">                <span class="php-var">$bu</span> = <span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'baseURL'</span>];
</span><span id="1149" class="l">            }
</span><span id="1150" class="l">            <span class="php-var">$url</span> = <span class="php-var">$bu</span> . <span class="php-var">$url</span>;
</span><span id="1151" class="l">        }
</span><span id="1152" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$url</span>;
</span><span id="1153" class="l">    }
</span><span id="1154" class="l">
</span><span id="1155" class="l">    <span class="php-comment">/* &lt;meta charset=&quot;ISO-8859-2&quot; /&gt; */</span>
</span><span id="1156" class="l">    <span class="php-comment">/* &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-2&quot; /&gt; */</span>
</span><span id="1157" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> detect_charset(<span class="php-var">$str</span>) {
</span><span id="1158" class="l">        <span class="php-var">$l</span>    = <span class="php-num">1024</span>;
</span><span id="1159" class="l">        <span class="php-var">$str</span>  = <span class="php-keyword2">substr</span>(<span class="php-var">$str</span>, <span class="php-num">0</span>, <span class="php-var">$l</span>);
</span><span id="1160" class="l">        <span class="php-var">$str_</span> = <span class="php-keyword2">strtolower</span>(<span class="php-var">$str</span>);
</span><span id="1161" class="l">        <span class="php-var">$p</span> = <span class="php-num">0</span>;
</span><span id="1162" class="l">        <span class="php-keyword1">while</span>(<span class="php-var">$p</span> &lt; <span class="php-var">$l</span>) {
</span><span id="1163" class="l">            <span class="php-var">$p</span> = <span class="php-keyword2">strpos</span>(<span class="php-var">$str_</span>, <span class="php-quote">'&lt;meta'</span>, <span class="php-var">$p</span>);
</span><span id="1164" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$p</span> === <span class="php-keyword1">false</span>) <span class="php-keyword1">break</span>;
</span><span id="1165" class="l">            <span class="php-var">$p</span>+=<span class="php-num">5</span>;
</span><span id="1166" class="l">            <span class="php-var">$q</span> = <span class="php-keyword2">strpos</span>(<span class="php-var">$str_</span>, <span class="php-quote">'&gt;'</span>, <span class="php-var">$p</span>);
</span><span id="1167" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$q</span> &lt; <span class="php-var">$p</span>) <span class="php-var">$q</span> = <span class="php-keyword2">strlen</span>(<span class="php-var">$str_</span>);
</span><span id="1168" class="l">            <span class="php-var">$a</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$str</span>, <span class="php-var">$p</span>, <span class="php-var">$q</span>-<span class="php-var">$p</span>);
</span><span id="1169" class="l">            <span class="php-var">$p</span> = <span class="php-var">$q</span>+<span class="php-num">2</span>;
</span><span id="1170" class="l">            <span class="php-var">$a</span> = self::html_parseAttrStr(<span class="php-var">$a</span>, <span class="php-keyword1">true</span>);
</span><span id="1171" class="l">            <span class="php-keyword1">if</span>(!<span class="php-keyword1">empty</span>(<span class="php-var">$a</span>[<span class="php-quote">'charset'</span>])) {
</span><span id="1172" class="l">                <span class="php-keyword1">return</span> <span class="php-keyword2">strtoupper</span>(<span class="php-var">$a</span>[<span class="php-quote">'charset'</span>]);
</span><span id="1173" class="l">            }
</span><span id="1174" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$a</span>[<span class="php-quote">'http-equiv'</span>]) &amp;&amp; <span class="php-keyword2">strtolower</span>(<span class="php-var">$a</span>[<span class="php-quote">'http-equiv'</span>]) === <span class="php-quote">'content-type'</span>) {
</span><span id="1175" class="l">                <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$a</span>[<span class="php-quote">'content'</span>])) <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;
</span><span id="1176" class="l">                <span class="php-var">$a</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">'charset='</span>, <span class="php-var">$a</span>[<span class="php-quote">'content'</span>]);
</span><span id="1177" class="l">                <span class="php-keyword1">return</span> <span class="php-keyword1">empty</span>(<span class="php-var">$a</span>) || <span class="php-keyword1">empty</span>(<span class="php-var">$a</span>[<span class="php-num">1</span>]) ? <span class="php-keyword1">false</span> : <span class="php-keyword2">strtoupper</span>(<span class="php-keyword2">trim</span>(<span class="php-var">$a</span>[<span class="php-num">1</span>]));
</span><span id="1178" class="l">            }
</span><span id="1179" class="l">        }
</span><span id="1180" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;
</span><span id="1181" class="l">    }
</span><span id="1182" class="l">
</span><span id="1183" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">strlen</span>() {
</span><span id="1184" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;html) ? <span class="php-keyword2">strlen</span>(<span class="php-var">$this</span>-&gt;html) : <span class="php-num">0</span>;
</span><span id="1185" class="l">    }
</span><span id="1186" class="l">
</span><span id="1187" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">substr</span>(<span class="php-var">$start</span>, <span class="php-var">$length</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="1188" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;html)
</span><span id="1189" class="l">            ? <span class="php-keyword2">substr</span>(<span class="php-var">$this</span>-&gt;html, <span class="php-var">$start</span>, <span class="php-keyword1">isset</span>(<span class="php-var">$length</span>) ? <span class="php-var">$length</span> : <span class="php-keyword2">strlen</span>(<span class="php-var">$this</span>-&gt;html))
</span><span id="1190" class="l">            : self::<span class="php-var">$_fl_</span>;
</span><span id="1191" class="l">        ;
</span><span id="1192" class="l">    }
</span><span id="1193" class="l">
</span><span id="1194" class="l">    <span class="php-comment">/// This method is for debugging only</span>
</span><span id="1195" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> _info() {
</span><span id="1196" class="l">        <span class="php-var">$inf</span> = <span class="php-keyword1">array</span>();
</span><span id="1197" class="l">        <span class="php-var">$ar</span> = <span class="php-keyword1">array</span>();
</span><span id="1198" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$this</span>-&gt;attribs <span class="php-keyword1">as</span> <span class="php-var">$i</span> =&gt; <span class="php-var">$a</span>) <span class="php-var">$ar</span>[<span class="php-var">$i</span>] = self::html_attr2str(<span class="php-var">$a</span>);
</span><span id="1199" class="l">        <span class="php-var">$inf</span>[<span class="php-quote">'attribs'</span>]   = <span class="php-var">$ar</span>              ;
</span><span id="1200" class="l">        <span class="php-var">$inf</span>[<span class="php-quote">'attrs'</span>]     = <span class="php-var">$attrs</span>           ;
</span><span id="1201" class="l">        <span class="php-var">$inf</span>[<span class="php-quote">'idx_attr'</span>]  = <span class="php-var">$this</span>-&gt;idx_attr  ;
</span><span id="1202" class="l">        <span class="php-var">$inf</span>[<span class="php-quote">'tag_idx'</span>]   = <span class="php-var">$this</span>-&gt;tag_idx   ;
</span><span id="1203" class="l">        <span class="php-var">$inf</span>[<span class="php-quote">'attr_idx'</span>]  = <span class="php-var">$this</span>-&gt;attr_idx  ;
</span><span id="1204" class="l">        <span class="php-var">$inf</span>[<span class="php-quote">'class_idx'</span>] = <span class="php-var">$this</span>-&gt;class_idx ;
</span><span id="1205" class="l">
</span><span id="1206" class="l">        <span class="php-var">$lev</span> = <span class="php-keyword1">array</span>();
</span><span id="1207" class="l">        <span class="php-var">$nm</span> = <span class="php-keyword1">array</span>();
</span><span id="1208" class="l">        <span class="php-var">$st</span> = <span class="php-keyword1">array</span>();
</span><span id="1209" class="l">        <span class="php-var">$pb</span> = -<span class="php-num">1</span>; <span class="php-var">$pe</span> = PHP_INT_MAX;
</span><span id="1210" class="l">        <span class="php-var">$l</span> = <span class="php-num">0</span>;
</span><span id="1211" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$this</span>-&gt;ids <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) {
</span><span id="1212" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$pb</span> &lt; <span class="php-var">$b</span> &amp;&amp; <span class="php-var">$b</span> &lt; <span class="php-var">$pe</span>) {
</span><span id="1213" class="l">                <span class="php-var">$st</span>[]  = <span class="php-keyword1">array</span>(<span class="php-var">$pb</span>, <span class="php-var">$pe</span>);
</span><span id="1214" class="l">                <span class="php-keyword1">list</span>(<span class="php-var">$pb</span>, <span class="php-var">$pe</span>) = <span class="php-keyword1">array</span>(<span class="php-var">$b</span>, <span class="php-var">$e</span>);
</span><span id="1215" class="l">            }
</span><span id="1216" class="l">            <span class="php-keyword1">else</span> <span class="php-keyword1">while</span>(<span class="php-var">$pe</span> &lt; <span class="php-var">$b</span> &amp;&amp; <span class="php-var">$st</span>) {
</span><span id="1217" class="l">                <span class="php-keyword1">list</span>(<span class="php-var">$pb</span>, <span class="php-var">$pe</span>) = <span class="php-keyword2">array_pop</span>(<span class="php-var">$st</span>);
</span><span id="1218" class="l">            }
</span><span id="1219" class="l">            <span class="php-var">$nm</span>[<span class="php-var">$b</span>] = <span class="php-var">$this</span>-&gt;tags[<span class="php-var">$b</span>];
</span><span id="1220" class="l">            <span class="php-var">$lev</span>[<span class="php-var">$b</span>] = <span class="php-keyword2">count</span>(<span class="php-var">$st</span>);
</span><span id="1221" class="l">        }
</span><span id="1222" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$nm</span> <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; &amp;<span class="php-var">$n</span>) {
</span><span id="1223" class="l">            <span class="php-var">$n</span> = <span class="php-keyword2">str_repeat</span>(<span class="php-quote">' -'</span>, <span class="php-var">$lev</span>[<span class="php-var">$b</span>]) . <span class="php-quote">' &lt; '</span> . <span class="php-var">$n</span> . <span class="php-quote">' '</span> . <span class="php-var">$this</span>-&gt;get_attr_byId(<span class="php-var">$b</span>, <span class="php-keyword1">NULL</span>, <span class="php-keyword1">true</span>) . <span class="php-quote">' &gt;'</span>;
</span><span id="1224" class="l">        }
</span><span id="1225" class="l">        <span class="php-var">$nm</span> = <span class="php-keyword2">implode</span>(<span class="php-quote">&quot;\n&quot;</span>, <span class="php-var">$nm</span>);
</span><span id="1226" class="l">        <span class="php-var">$inf</span>[<span class="php-quote">'struc'</span>] = <span class="php-var">$nm</span>;
</span><span id="1227" class="l">        <span class="php-keyword1">unset</span>(<span class="php-var">$lev</span>, <span class="php-var">$st</span>, <span class="php-var">$nm</span>);
</span><span id="1228" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$inf</span>;
</span><span id="1229" class="l">    }
</span><span id="1230" class="l">
</span><span id="1231" class="l">    <span class="php-comment">/// Index comment tags position in source HTML</span>
</span><span id="1232" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> _index_comments_html(<span class="php-var">$o</span>) {
</span><span id="1233" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$o</span>-&gt;l)) <span class="php-var">$o</span>-&gt;l = <span class="php-keyword2">strlen</span>(<span class="php-var">$o</span>-&gt;h);
</span><span id="1234" class="l">        <span class="php-var">$o</span>-&gt;tg = self::<span class="php-var">$_ar_</span>;
</span><span id="1235" class="l">        <span class="php-var">$i</span> = <span class="php-var">$o</span>-&gt;i;
</span><span id="1236" class="l">        <span class="php-keyword1">while</span>(<span class="php-var">$i</span> &lt; <span class="php-var">$o</span>-&gt;l) {
</span><span id="1237" class="l">            <span class="php-var">$i</span> = <span class="php-keyword2">strpos</span>(<span class="php-var">$o</span>-&gt;h, <span class="php-quote">'&lt;!--'</span>, <span class="php-var">$i</span>);
</span><span id="1238" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$i</span> === <span class="php-keyword1">false</span>) <span class="php-keyword1">break</span>;
</span><span id="1239" class="l">            <span class="php-var">$p</span> = <span class="php-var">$i</span>;
</span><span id="1240" class="l">            <span class="php-var">$i</span> += <span class="php-num">4</span>;
</span><span id="1241" class="l">            <span class="php-var">$i</span> = <span class="php-keyword2">strpos</span>(<span class="php-var">$o</span>-&gt;h, <span class="php-quote">'--&gt;'</span>, <span class="php-var">$i</span>);
</span><span id="1242" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$i</span> === <span class="php-keyword1">false</span>) <span class="php-var">$i</span> = <span class="php-var">$o</span>-&gt;l;
</span><span id="1243" class="l">            <span class="php-keyword1">else</span> <span class="php-var">$i</span> += <span class="php-num">3</span>;
</span><span id="1244" class="l">            <span class="php-var">$o</span>-&gt;tg[<span class="php-var">$p</span>] = <span class="php-var">$i</span>;
</span><span id="1245" class="l">        }
</span><span id="1246" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$o</span>;
</span><span id="1247" class="l">    }
</span><span id="1248" class="l">
</span><span id="1249" class="l">    <span class="php-comment">/// index all tags by tagname at ids</span>
</span><span id="1250" class="l">    <span class="php-keyword1">private</span> <span class="php-keyword1">function</span> _index_tags() {
</span><span id="1251" class="l">        <span class="php-var">$s</span> = <span class="php-var">$nix</span> = <span class="php-var">$ix</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="1252" class="l">        <span class="php-var">$ids</span> = <span class="php-var">$this</span>-&gt;ids;
</span><span id="1253" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$this</span>-&gt;tags <span class="php-keyword1">as</span> <span class="php-var">$id</span> =&gt; <span class="php-var">$n</span>) {
</span><span id="1254" class="l">            <span class="php-comment">// if(!isset($ix[$n])) $ix[$n] = array();</span>
</span><span id="1255" class="l">            <span class="php-var">$ix</span>[<span class="php-var">$n</span>][<span class="php-var">$id</span>] = <span class="php-var">$ids</span>[<span class="php-var">$id</span>];
</span><span id="1256" class="l">        }
</span><span id="1257" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$ix</span> <span class="php-keyword1">as</span> <span class="php-var">$n</span> =&gt; <span class="php-var">$v</span>) {
</span><span id="1258" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$v</span> <span class="php-keyword1">as</span> <span class="php-var">$id</span> =&gt; <span class="php-var">$e</span>) <span class="php-var">$this</span>-&gt;tags[<span class="php-var">$id</span>] = <span class="php-var">$n</span>;
</span><span id="1259" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$nix</span>[<span class="php-var">$n</span>])) <span class="php-keyword1">continue</span>;
</span><span id="1260" class="l">            <span class="php-var">$_n</span> = <span class="php-keyword2">strtolower</span>(<span class="php-var">$n</span>);
</span><span id="1261" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$nix</span>[<span class="php-var">$_n</span>])) {
</span><span id="1262" class="l">                <span class="php-keyword1">foreach</span>(<span class="php-var">$v</span> <span class="php-keyword1">as</span> <span class="php-var">$id</span> =&gt; <span class="php-var">$e</span>) <span class="php-var">$nix</span>[<span class="php-var">$_n</span>][<span class="php-var">$id</span>] = <span class="php-var">$e</span>;
</span><span id="1263" class="l">                <span class="php-var">$s</span>[] = <span class="php-var">$_n</span>;
</span><span id="1264" class="l">            }
</span><span id="1265" class="l">            <span class="php-keyword1">else</span> {
</span><span id="1266" class="l">                <span class="php-var">$nix</span>[<span class="php-var">$_n</span>] = <span class="php-var">$v</span>;
</span><span id="1267" class="l">            }
</span><span id="1268" class="l">        }
</span><span id="1269" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$s</span> <span class="php-keyword1">as</span> <span class="php-var">$_n</span>) <span class="php-keyword2">asort</span>(<span class="php-var">$nix</span>[<span class="php-var">$_n</span>]);
</span><span id="1270" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;tag_idx = <span class="php-var">$nix</span>;
</span><span id="1271" class="l">    }
</span><span id="1272" class="l">
</span><span id="1273" class="l">    <span class="php-comment">/// make attribute ids (aids) and index all attributes by aid at ids</span>
</span><span id="1274" class="l">    <span class="php-keyword1">private</span> <span class="php-keyword1">function</span> _index_attribs(<span class="php-var">$attrs</span>) {
</span><span id="1275" class="l">      <span class="php-var">$this</span>-&gt;attr_idx = <span class="php-var">$this</span>-&gt;attrs = <span class="php-var">$aix</span> = <span class="php-var">$six</span> = <span class="php-var">$iix</span> = <span class="php-var">$iax</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="1276" class="l">      <span class="php-var">$i</span> = <span class="php-num">0</span>;
</span><span id="1277" class="l">      <span class="php-var">$ian</span> = self::<span class="php-var">$_index_attribs</span>;
</span><span id="1278" class="l">      <span class="php-keyword1">foreach</span>(<span class="php-var">$ian</span> <span class="php-keyword1">as</span> <span class="php-var">$atn</span>) <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$iax</span>[<span class="php-var">$atn</span>])) <span class="php-var">$iax</span>[<span class="php-var">$atn</span>] = self::<span class="php-var">$_ar_</span>;
</span><span id="1279" class="l">      <span class="php-keyword1">foreach</span>(<span class="php-var">$attrs</span> <span class="php-keyword1">as</span> <span class="php-var">$str</span> =&gt; <span class="php-var">$v</span>) {
</span><span id="1280" class="l">         <span class="php-var">$a</span> = self::html_parseAttrStr(<span class="php-var">$str</span>, <span class="php-keyword1">true</span>, <span class="php-keyword1">false</span>);
</span><span id="1281" class="l">         <span class="php-keyword1">unset</span>(<span class="php-var">$attrs</span>[<span class="php-var">$str</span>]); <span class="php-comment">// free mem</span>
</span><span id="1282" class="l">         <span class="php-keyword1">foreach</span>(<span class="php-var">$ian</span> <span class="php-keyword1">as</span> <span class="php-var">$atn</span>) {
</span><span id="1283" class="l">             <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$a</span>[<span class="php-var">$atn</span>])) { <span class="php-comment">// href attribute has a separate index</span>
</span><span id="1284" class="l">                <span class="php-keyword1">if</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$v</span>)) {
</span><span id="1285" class="l">                    <span class="php-keyword1">foreach</span>(<span class="php-var">$v</span> <span class="php-keyword1">as</span> <span class="php-var">$e</span>) <span class="php-var">$iax</span>[<span class="php-var">$atn</span>][<span class="php-var">$e</span>] = <span class="php-var">$a</span>[<span class="php-var">$atn</span>];
</span><span id="1286" class="l">                }
</span><span id="1287" class="l">                <span class="php-keyword1">else</span> {
</span><span id="1288" class="l">                    <span class="php-var">$iax</span>[<span class="php-var">$atn</span>][<span class="php-var">$v</span>] = <span class="php-var">$a</span>[<span class="php-var">$atn</span>];
</span><span id="1289" class="l">                }
</span><span id="1290" class="l">                <span class="php-keyword1">unset</span>(<span class="php-var">$a</span>[<span class="php-var">$atn</span>]);
</span><span id="1291" class="l">             }
</span><span id="1292" class="l">         }
</span><span id="1293" class="l">         <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$a</span>)) <span class="php-keyword1">continue</span>;
</span><span id="1294" class="l">         <span class="php-var">$str</span> = self::html_attr2str(<span class="php-var">$a</span>);
</span><span id="1295" class="l">         <span class="php-var">$aid</span> = <span class="php-var">$i</span>;
</span><span id="1296" class="l">         <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$six</span>[<span class="php-var">$str</span>])) {
</span><span id="1297" class="l">            <span class="php-var">$aid</span> = <span class="php-var">$six</span>[<span class="php-var">$str</span>];
</span><span id="1298" class="l">            <span class="php-keyword1">if</span>(!<span class="php-keyword2">is_array</span>(<span class="php-var">$iix</span>[<span class="php-var">$aid</span>])) <span class="php-var">$iix</span>[<span class="php-var">$aid</span>] = <span class="php-keyword1">array</span>(<span class="php-var">$iix</span>[<span class="php-var">$aid</span>]);
</span><span id="1299" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$v</span>)) <span class="php-keyword1">foreach</span>(<span class="php-var">$v</span> <span class="php-keyword1">as</span> <span class="php-var">$v_</span>) <span class="php-var">$iix</span>[<span class="php-var">$aid</span>][] = <span class="php-var">$v_</span>;
</span><span id="1300" class="l">            <span class="php-keyword1">else</span> <span class="php-var">$iix</span>[<span class="php-var">$aid</span>][] = <span class="php-var">$v</span>;
</span><span id="1301" class="l">         }
</span><span id="1302" class="l">         <span class="php-keyword1">else</span> {
</span><span id="1303" class="l">            <span class="php-var">$six</span>[<span class="php-var">$str</span>] = <span class="php-var">$aid</span>;
</span><span id="1304" class="l">            <span class="php-var">$aix</span>[<span class="php-var">$aid</span>] = <span class="php-var">$a</span>;
</span><span id="1305" class="l">            <span class="php-var">$iix</span>[<span class="php-var">$aid</span>] = <span class="php-var">$v</span>;
</span><span id="1306" class="l">            ++<span class="php-var">$i</span>;
</span><span id="1307" class="l">         }
</span><span id="1308" class="l">      }
</span><span id="1309" class="l">      <span class="php-keyword1">unset</span>(<span class="php-var">$six</span>, <span class="php-var">$attrs</span>, <span class="php-var">$i</span>); <span class="php-comment">// free mem</span>
</span><span id="1310" class="l">      <span class="php-keyword1">foreach</span>(<span class="php-var">$aix</span> <span class="php-keyword1">as</span> <span class="php-var">$aid</span> =&gt; <span class="php-var">$a</span>) {
</span><span id="1311" class="l">         <span class="php-var">$v</span> = <span class="php-var">$iix</span>[<span class="php-var">$aid</span>];
</span><span id="1312" class="l">         <span class="php-keyword1">if</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$v</span>)) {
</span><span id="1313" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword2">count</span>(<span class="php-var">$v</span>) == <span class="php-num">1</span>) {
</span><span id="1314" class="l">              <span class="php-var">$v</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$v</span>);
</span><span id="1315" class="l">            }
</span><span id="1316" class="l">            <span class="php-keyword1">elseif</span>(<span class="php-var">$v</span>) {
</span><span id="1317" class="l">              <span class="php-var">$u</span> = <span class="php-keyword1">array</span>();
</span><span id="1318" class="l">              <span class="php-keyword1">foreach</span>(<span class="php-var">$v</span> <span class="php-keyword1">as</span> <span class="php-var">$e</span>) {
</span><span id="1319" class="l">                 <span class="php-var">$u</span>[<span class="php-var">$e</span>] = <span class="php-var">$this</span>-&gt;ids[<span class="php-var">$e</span>];
</span><span id="1320" class="l">                 <span class="php-var">$this</span>-&gt;attrs[<span class="php-var">$e</span>] = <span class="php-var">$aid</span>;
</span><span id="1321" class="l">              }
</span><span id="1322" class="l">              <span class="php-var">$v</span> = <span class="php-var">$u</span>; <span class="php-keyword1">unset</span>(<span class="php-var">$u</span>);
</span><span id="1323" class="l">            }
</span><span id="1324" class="l">         }
</span><span id="1325" class="l">         <span class="php-keyword1">if</span>(!<span class="php-keyword2">is_array</span>(<span class="php-var">$v</span>)) <span class="php-var">$this</span>-&gt;attrs[<span class="php-var">$v</span>] = <span class="php-var">$aid</span>;
</span><span id="1326" class="l">         <span class="php-var">$this</span>-&gt;attr_idx[<span class="php-var">$aid</span>] = <span class="php-var">$v</span>; <span class="php-comment">// ids for this attr</span>
</span><span id="1327" class="l">      }
</span><span id="1328" class="l">      <span class="php-keyword1">foreach</span>(<span class="php-var">$iax</span> <span class="php-keyword1">as</span> <span class="php-var">$atn</span> =&gt; <span class="php-var">$v</span>) <span class="php-keyword1">if</span>(!<span class="php-var">$v</span>) <span class="php-keyword1">unset</span>(<span class="php-var">$iax</span>[<span class="php-var">$atn</span>]);
</span><span id="1329" class="l">      <span class="php-var">$this</span>-&gt;idx_attr = <span class="php-var">$iax</span>;
</span><span id="1330" class="l">      <span class="php-var">$this</span>-&gt;attribs = <span class="php-var">$aix</span>;
</span><span id="1331" class="l">
</span><span id="1332" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;attr_idx;
</span><span id="1333" class="l">    }
</span><span id="1334" class="l">
</span><span id="1335" class="l">    <span class="php-comment">/// index all classes by class-name at aids</span>
</span><span id="1336" class="l">    <span class="php-keyword1">private</span> <span class="php-keyword1">function</span> _index_classes() {
</span><span id="1337" class="l">        <span class="php-var">$ix</span> = <span class="php-keyword1">array</span>();
</span><span id="1338" class="l">        <span class="php-var">$aix</span> = <span class="php-var">$this</span>-&gt;attr_idx;
</span><span id="1339" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$this</span>-&gt;attribs <span class="php-keyword1">as</span> <span class="php-var">$aid</span> =&gt; &amp;<span class="php-var">$a</span>) <span class="php-keyword1">if</span>(!<span class="php-keyword1">empty</span>(<span class="php-var">$a</span>[<span class="php-quote">'class'</span>])) {
</span><span id="1340" class="l">            <span class="php-var">$cl</span> = <span class="php-var">$a</span>[<span class="php-quote">'class'</span>];
</span><span id="1341" class="l">            <span class="php-keyword1">if</span>(!<span class="php-keyword2">is_array</span>(<span class="php-var">$cl</span>)) {
</span><span id="1342" class="l">                <span class="php-var">$cl</span> = <span class="php-keyword2">preg_split</span>(<span class="php-quote">'|\\s+|'</span>,<span class="php-keyword2">trim</span>(<span class="php-var">$cl</span>));
</span><span id="1343" class="l">            }
</span><span id="1344" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$cl</span> <span class="php-keyword1">as</span> <span class="php-var">$cl</span>) {
</span><span id="1345" class="l">                <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$ix</span>[<span class="php-var">$cl</span>])) {
</span><span id="1346" class="l">                    <span class="php-keyword1">if</span>(!<span class="php-keyword2">is_array</span>(<span class="php-var">$ix</span>[<span class="php-var">$cl</span>])) <span class="php-var">$ix</span>[<span class="php-var">$cl</span>] = <span class="php-keyword1">array</span>(<span class="php-var">$ix</span>[<span class="php-var">$cl</span>]=&gt;<span class="php-var">$this</span>-&gt;attr_idx[<span class="php-var">$ix</span>[<span class="php-var">$cl</span>]]);
</span><span id="1347" class="l">                    <span class="php-var">$ix</span>[<span class="php-var">$cl</span>][<span class="php-var">$aid</span>] = <span class="php-var">$this</span>-&gt;attr_idx[<span class="php-var">$aid</span>];
</span><span id="1348" class="l">                }
</span><span id="1349" class="l">                <span class="php-keyword1">else</span> {
</span><span id="1350" class="l">                    <span class="php-var">$ix</span>[<span class="php-var">$cl</span>] = <span class="php-var">$aid</span>;
</span><span id="1351" class="l">                }
</span><span id="1352" class="l">            }
</span><span id="1353" class="l">        }
</span><span id="1354" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;class_idx = <span class="php-var">$ix</span>;
</span><span id="1355" class="l">    }
</span><span id="1356" class="l">
</span><span id="1357" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> _index_all() {
</span><span id="1358" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$this</span>-&gt;indexed) <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;tag_idx;
</span><span id="1359" class="l">        <span class="php-var">$this</span>-&gt;indexed = <span class="php-keyword1">true</span>;
</span><span id="1360" class="l">
</span><span id="1361" class="l">        <span class="php-comment">// Parser state object</span>
</span><span id="1362" class="l">        <span class="php-var">$this</span>-&gt;o = <span class="php-var">$o</span> = <span class="php-keyword1">new</span> stdClass;
</span><span id="1363" class="l">        <span class="php-var">$o</span>-&gt;h   = <span class="php-var">$this</span>-&gt;html;
</span><span id="1364" class="l">        <span class="php-var">$o</span>-&gt;l   = <span class="php-keyword2">strlen</span>(<span class="php-var">$o</span>-&gt;h);
</span><span id="1365" class="l">        <span class="php-var">$o</span>-&gt;i   = <span class="php-num">0</span>;
</span><span id="1366" class="l">        <span class="php-var">$o</span>-&gt;tg  = self::<span class="php-var">$_ar_</span>;
</span><span id="1367" class="l">        <span class="php-var">$this</span>-&gt;_index_comments_html(<span class="php-var">$o</span>);
</span><span id="1368" class="l">
</span><span id="1369" class="l">        <span class="php-var">$firstLetterChars</span> = self::str_range(self::<span class="php-var">$_tagID_first_letter</span>); <span class="php-comment">// first letter chars</span>
</span><span id="1370" class="l">        <span class="php-var">$tagLettersChars</span>  = self::str_range(self::<span class="php-var">$_tagID_letters</span>);      <span class="php-comment">// tag name chars</span>
</span><span id="1371" class="l">        <span class="php-var">$specialTags</span>      = <span class="php-keyword1">array</span>(<span class="php-quote">'!'</span>=&gt;<span class="php-num">1</span>, <span class="php-quote">'?'</span>=&gt;<span class="php-num">2</span>); <span class="php-comment">// special tags</span>
</span><span id="1372" class="l">        <span class="php-var">$unparsedTags</span>     = <span class="php-keyword2">array_flip</span>(self::<span class="php-var">$_unparsedTags</span>);
</span><span id="1373" class="l">
</span><span id="1374" class="l">        <span class="php-var">$utn</span>    = <span class="php-keyword1">NULL</span>; <span class="php-comment">// current unparsed tag name</span>
</span><span id="1375" class="l">        <span class="php-var">$i</span>      = <span class="php-var">$o</span>-&gt;i;
</span><span id="1376" class="l">        <span class="php-var">$stack</span>  = <span class="php-var">$a</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="1377" class="l">
</span><span id="1378" class="l">        <span class="php-keyword1">while</span>(<span class="php-var">$i</span> &lt; <span class="php-var">$o</span>-&gt;l) {
</span><span id="1379" class="l">            <span class="php-var">$i</span> = <span class="php-keyword2">strpos</span>(<span class="php-var">$o</span>-&gt;h, <span class="php-quote">'&lt;'</span>, <span class="php-var">$i</span>);
</span><span id="1380" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$i</span> === <span class="php-keyword1">false</span>) <span class="php-keyword1">break</span>;
</span><span id="1381" class="l">            ++<span class="php-var">$i</span>;
</span><span id="1382" class="l">            <span class="php-var">$b</span> = <span class="php-var">$i</span>;
</span><span id="1383" class="l">            <span class="php-var">$c</span> = <span class="php-var">$o</span>-&gt;h[<span class="php-var">$i</span>];
</span><span id="1384" class="l">
</span><span id="1385" class="l">            <span class="php-comment">// if close tags</span>
</span><span id="1386" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$isCloseTag</span> = <span class="php-var">$c</span> === <span class="php-quote">'/'</span>) {
</span><span id="1387" class="l">                ++<span class="php-var">$i</span>;
</span><span id="1388" class="l">                <span class="php-var">$c</span> = <span class="php-var">$o</span>-&gt;h[<span class="php-var">$i</span>];
</span><span id="1389" class="l">            }
</span><span id="1390" class="l">
</span><span id="1391" class="l">            <span class="php-comment">// usual tags</span>
</span><span id="1392" class="l">            <span class="php-keyword1">if</span>( <span class="php-keyword1">false</span> !== <span class="php-keyword2">strpos</span>(<span class="php-var">$firstLetterChars</span>, <span class="php-var">$c</span>) ) {
</span><span id="1393" class="l">                ++<span class="php-var">$i</span>; <span class="php-comment">// posibly second letter of tagName</span>
</span><span id="1394" class="l">                <span class="php-var">$j</span> = <span class="php-keyword2">strspn</span>(<span class="php-var">$o</span>-&gt;h, <span class="php-var">$tagLettersChars</span>, <span class="php-var">$i</span>);
</span><span id="1395" class="l">                <span class="php-var">$n</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$o</span>-&gt;h, <span class="php-var">$i</span>-<span class="php-num">1</span>, <span class="php-var">$j</span>+<span class="php-num">1</span>);
</span><span id="1396" class="l">                <span class="php-var">$i</span> += <span class="php-var">$j</span>;
</span><span id="1397" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$utn</span>) {
</span><span id="1398" class="l">                    <span class="php-var">$n</span> = <span class="php-keyword2">strtolower</span>(<span class="php-var">$n</span>);
</span><span id="1399" class="l">                    <span class="php-keyword1">if</span>(<span class="php-var">$utn</span> !== <span class="php-var">$n</span> || !<span class="php-var">$isCloseTag</span>) {
</span><span id="1400" class="l">                        <span class="php-keyword1">continue</span>;
</span><span id="1401" class="l">                    }
</span><span id="1402" class="l">                    <span class="php-var">$utn</span> = <span class="php-keyword1">NULL</span>;
</span><span id="1403" class="l">                }
</span><span id="1404" class="l">                <span class="php-var">$i</span> = self::html_findTagClose(<span class="php-var">$o</span>-&gt;h, <span class="php-var">$i</span>);
</span><span id="1405" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$i</span> === <span class="php-keyword1">false</span>) <span class="php-keyword1">break</span>;
</span><span id="1406" class="l">                <span class="php-var">$e</span> = <span class="php-var">$i</span>++;
</span><span id="1407" class="l">                <span class="php-comment">// open tag</span>
</span><span id="1408" class="l">                <span class="php-keyword1">if</span>(!<span class="php-var">$isCloseTag</span>) {
</span><span id="1409" class="l">                    <span class="php-var">$this</span>-&gt;ids[<span class="php-var">$e</span>] = <span class="php-var">$e</span>;  <span class="php-comment">// the end of the tag contents (&gt;)</span>
</span><span id="1410" class="l">                    <span class="php-var">$this</span>-&gt;tags[<span class="php-var">$e</span>] = <span class="php-var">$n</span>;
</span><span id="1411" class="l">                    <span class="php-var">$b</span> += <span class="php-var">$j</span>+<span class="php-num">1</span>;
</span><span id="1412" class="l">                    <span class="php-var">$b</span> += <span class="php-keyword2">strspn</span>(<span class="php-var">$o</span>-&gt;h, <span class="php-quote">&quot; \n\r\t&quot;</span>, <span class="php-var">$b</span>);
</span><span id="1413" class="l">                    <span class="php-keyword1">if</span>( <span class="php-var">$b</span> &lt; <span class="php-var">$e</span> ) {
</span><span id="1414" class="l">                        <span class="php-var">$at</span> = <span class="php-keyword2">trim</span>(<span class="php-keyword2">substr</span>(<span class="php-var">$o</span>-&gt;h, <span class="php-var">$b</span>, <span class="php-var">$e</span>-<span class="php-var">$b</span>));
</span><span id="1415" class="l">                        <span class="php-keyword1">if</span>(<span class="php-var">$at</span>) {
</span><span id="1416" class="l">                            <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$a</span>[<span class="php-var">$at</span>])) <span class="php-var">$a</span>[<span class="php-var">$at</span>] = <span class="php-var">$e</span>;
</span><span id="1417" class="l">                            <span class="php-keyword1">elseif</span>(!<span class="php-keyword2">is_array</span>(<span class="php-var">$a</span>[<span class="php-var">$at</span>])) <span class="php-var">$a</span>[<span class="php-var">$at</span>] = <span class="php-keyword1">array</span>(<span class="php-var">$a</span>[<span class="php-var">$at</span>], <span class="php-var">$e</span>);
</span><span id="1418" class="l">                            <span class="php-keyword1">else</span> <span class="php-var">$a</span>[<span class="php-var">$at</span>][] = <span class="php-var">$e</span>;
</span><span id="1419" class="l">                        };
</span><span id="1420" class="l">                    }
</span><span id="1421" class="l">                    <span class="php-keyword1">if</span>(<span class="php-var">$o</span>-&gt;h[<span class="php-var">$e</span>-<span class="php-num">1</span>] != <span class="php-quote">'/'</span>) {
</span><span id="1422" class="l">                        <span class="php-var">$n</span> = <span class="php-keyword2">strtolower</span>(<span class="php-var">$n</span>);
</span><span id="1423" class="l">                        <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$unparsedTags</span>[<span class="php-var">$n</span>])) {
</span><span id="1424" class="l">                            <span class="php-var">$utn</span> = <span class="php-var">$n</span>;
</span><span id="1425" class="l">                        }
</span><span id="1426" class="l">                        <span class="php-var">$stack</span>[<span class="php-var">$n</span>][<span class="php-var">$b</span>] = <span class="php-var">$e</span>; <span class="php-comment">// put in stack</span>
</span><span id="1427" class="l">                    }
</span><span id="1428" class="l">                }
</span><span id="1429" class="l">                <span class="php-comment">// close tag</span>
</span><span id="1430" class="l">                <span class="php-keyword1">else</span> {
</span><span id="1431" class="l">                    <span class="php-var">$n</span> = <span class="php-keyword2">strtolower</span>(<span class="php-var">$n</span>);
</span><span id="1432" class="l">                    <span class="php-var">$s</span> = &amp;<span class="php-var">$stack</span>[<span class="php-var">$n</span>];
</span><span id="1433" class="l">                    <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$s</span>)) ;                             <span class="php-comment">// error - tag not opened, but closed - ???</span>
</span><span id="1434" class="l">                    <span class="php-keyword1">else</span> {
</span><span id="1435" class="l">                        <span class="php-var">$q</span> = <span class="php-keyword2">end</span>(<span class="php-var">$s</span>);
</span><span id="1436" class="l">                        <span class="php-var">$p</span> = <span class="php-keyword2">key</span>(<span class="php-var">$s</span>);
</span><span id="1437" class="l">                        <span class="php-keyword1">unset</span>(<span class="php-var">$s</span>[<span class="php-var">$p</span>], <span class="php-var">$s</span>);
</span><span id="1438" class="l">                        <span class="php-var">$this</span>-&gt;ids[<span class="php-var">$q</span>] = <span class="php-var">$b</span>-<span class="php-num">1</span>;                  <span class="php-comment">// the end of the tag contents (&lt;)</span>
</span><span id="1439" class="l">                    }
</span><span id="1440" class="l">                }
</span><span id="1441" class="l">            }
</span><span id="1442" class="l">            <span class="php-keyword1">elseif</span>(!<span class="php-var">$isCloseTag</span>) {
</span><span id="1443" class="l">                <span class="php-comment">// special tags</span>
</span><span id="1444" class="l">                <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$specialTags</span>[<span class="php-var">$c</span>])) {
</span><span id="1445" class="l">                    <span class="php-var">$b</span>--;
</span><span id="1446" class="l">                    <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$o</span>-&gt;tg[<span class="php-var">$b</span>])) {
</span><span id="1447" class="l">                        <span class="php-var">$i</span> = <span class="php-var">$o</span>-&gt;tg[<span class="php-var">$b</span>];
</span><span id="1448" class="l">                        <span class="php-keyword1">continue</span>;
</span><span id="1449" class="l">                    }
</span><span id="1450" class="l">                    <span class="php-comment">// ???</span>
</span><span id="1451" class="l">                }
</span><span id="1452" class="l">                <span class="php-keyword1">else</span> <span class="php-keyword1">continue</span>;          <span class="php-comment">// not a tag</span>
</span><span id="1453" class="l">                <span class="php-var">$i</span> = <span class="php-keyword2">strpos</span>(<span class="php-var">$o</span>-&gt;h, <span class="php-quote">'&gt;'</span>, <span class="php-var">$i</span>);
</span><span id="1454" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$i</span> === <span class="php-keyword1">false</span>) <span class="php-keyword1">break</span>;
</span><span id="1455" class="l">                <span class="php-var">$e</span> = <span class="php-var">$i</span>++;
</span><span id="1456" class="l">            };
</span><span id="1457" class="l">        }
</span><span id="1458" class="l">
</span><span id="1459" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$stack</span> <span class="php-keyword1">as</span> <span class="php-var">$n</span> =&gt; <span class="php-var">$st</span>) <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$st</span>)) <span class="php-keyword1">unset</span>(<span class="php-var">$stack</span>[<span class="php-var">$n</span>]);
</span><span id="1460" class="l">        <span class="php-comment">// if(self::$autoclose_tags) {</span>
</span><span id="1461" class="l">            <span class="php-comment">// foreach($stack as $n =&gt; $st) { // ???</span>
</span><span id="1462" class="l">            <span class="php-comment">// }</span>
</span><span id="1463" class="l">        <span class="php-comment">// } else {</span>
</span><span id="1464" class="l">            <span class="php-comment">// foreach($stack as $n =&gt; $st) { // ???</span>
</span><span id="1465" class="l">            <span class="php-comment">// }</span>
</span><span id="1466" class="l">        <span class="php-comment">// }</span>
</span><span id="1467" class="l">
</span><span id="1468" class="l">        <span class="php-var">$this</span>-&gt;_index_tags();
</span><span id="1469" class="l">        <span class="php-var">$this</span>-&gt;_index_attribs(<span class="php-var">$a</span>); <span class="php-keyword1">unset</span>(<span class="php-var">$a</span>);
</span><span id="1470" class="l">        <span class="php-var">$this</span>-&gt;_index_classes();
</span><span id="1471" class="l">
</span><span id="1472" class="l">        <span class="php-comment">// debug($stack); // unclosed tags</span>
</span><span id="1473" class="l">
</span><span id="1474" class="l">        <span class="php-var">$this</span>-&gt;o = self::<span class="php-var">$_nl_</span>; <span class="php-comment">// Free mem</span>
</span><span id="1475" class="l">
</span><span id="1476" class="l">        <span class="php-comment">// Read &lt;base href=&quot;...&quot; /&gt; tag</span>
</span><span id="1477" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">empty</span>(<span class="php-var">$this</span>-&gt;tag_idx[<span class="php-quote">'base'</span>])) {
</span><span id="1478" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$this</span>-&gt;tag_idx[<span class="php-quote">'base'</span>] <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) {
</span><span id="1479" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$a</span> = <span class="php-var">$this</span>-&gt;get_attr_byId(<span class="php-var">$b</span>, <span class="php-quote">'href'</span>, <span class="php-keyword1">false</span>)) {
</span><span id="1480" class="l">                    <span class="php-var">$this</span>-&gt;baseURI(<span class="php-var">$a</span>);
</span><span id="1481" class="l">                    <span class="php-keyword1">break</span>;
</span><span id="1482" class="l">                }
</span><span id="1483" class="l">            }
</span><span id="1484" class="l">        }
</span><span id="1485" class="l">
</span><span id="1486" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;tag_idx;
</span><span id="1487" class="l">    }
</span><span id="1488" class="l">
</span><span id="1489" class="l">   <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="1490" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> _get_ctx(<span class="php-var">$ctx</span>) {
</span><span id="1491" class="l">        <span class="php-keyword1">if</span> ( !(<span class="php-var">$ctx</span> <span class="php-keyword1">instanceof</span> parent) ) {
</span><span id="1492" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$ctx</span>) || <span class="php-keyword2">is_int</span>(<span class="php-var">$ctx</span>)) {
</span><span id="1493" class="l">                <span class="php-var">$ctx</span> = <span class="php-keyword1">new</span> hQuery_Context(<span class="php-var">$this</span>, <span class="php-var">$ctx</span>, <span class="php-keyword1">true</span>);
</span><span id="1494" class="l">            }
</span><span id="1495" class="l">            <span class="php-keyword1">else</span> {
</span><span id="1496" class="l">                <span class="php-var">$ctx</span> = self::<span class="php-var">$_fl_</span>;
</span><span id="1497" class="l">            }
</span><span id="1498" class="l">        }
</span><span id="1499" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ctx</span> &amp;&amp; <span class="php-keyword2">count</span>(<span class="php-var">$ctx</span>) ? <span class="php-var">$ctx</span> : self::<span class="php-var">$_fl_</span>; <span class="php-comment">// false for error - something is not ok</span>
</span><span id="1500" class="l">    }
</span><span id="1501" class="l">   <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="1502" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> _find(<span class="php-var">$name</span>, <span class="php-var">$class</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$attr</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$ctx</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$rec</span>=<span class="php-keyword1">true</span>) {
</span><span id="1503" class="l">      <span class="php-comment">// if(!in_array($name, array('meta', 'head'))) debug(compact('name', 'class', 'attr','ctx', 'rec'));</span>
</span><span id="1504" class="l">
</span><span id="1505" class="l">      <span class="php-var">$aids</span> = <span class="php-keyword1">NULL</span>;
</span><span id="1506" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$class</span>) {
</span><span id="1507" class="l">         <span class="php-keyword1">if</span>(<span class="php-var">$attr</span>)    <span class="php-var">$aids</span> = <span class="php-var">$this</span>-&gt;get_aids_byClassAttr(<span class="php-var">$class</span>, <span class="php-var">$attr</span>, <span class="php-keyword1">true</span>);
</span><span id="1508" class="l">         <span class="php-keyword1">else</span>         <span class="php-var">$aids</span> = <span class="php-var">$this</span>-&gt;get_aids_byClass(<span class="php-var">$class</span>, <span class="php-keyword1">true</span>);
</span><span id="1509" class="l">         <span class="php-keyword1">if</span>(!<span class="php-var">$aids</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_nl_</span>;
</span><span id="1510" class="l">      }
</span><span id="1511" class="l">      <span class="php-keyword1">elseif</span>(<span class="php-var">$attr</span>) {
</span><span id="1512" class="l">         <span class="php-var">$aids</span> = <span class="php-var">$this</span>-&gt;get_aids_byAttr(<span class="php-var">$attr</span>, <span class="php-keyword1">true</span>);
</span><span id="1513" class="l">         <span class="php-keyword1">if</span>(!<span class="php-var">$aids</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_nl_</span>;
</span><span id="1514" class="l">      }
</span><span id="1515" class="l">
</span><span id="1516" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword2">is_string</span>(<span class="php-var">$name</span>) &amp;&amp; <span class="php-var">$name</span> !== <span class="php-quote">''</span> &amp;&amp; <span class="php-var">$name</span> != <span class="php-quote">'*'</span>) {
</span><span id="1517" class="l">         <span class="php-var">$name</span> = <span class="php-keyword2">strtolower</span>(<span class="php-keyword2">trim</span>(<span class="php-var">$name</span>));
</span><span id="1518" class="l">         <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$this</span>-&gt;tag_idx[<span class="php-var">$name</span>])) <span class="php-keyword1">return</span> self::<span class="php-var">$_nl_</span>; <span class="php-comment">// no such tag-name</span>
</span><span id="1519" class="l">      }
</span><span id="1520" class="l">      <span class="php-keyword1">else</span> <span class="php-var">$name</span> = <span class="php-keyword1">NULL</span>;
</span><span id="1521" class="l">
</span><span id="1522" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$ctx</span>)) {
</span><span id="1523" class="l">         <span class="php-var">$ctx</span> = <span class="php-var">$this</span>-&gt;_get_ctx(<span class="php-var">$ctx</span>);
</span><span id="1524" class="l">         <span class="php-keyword1">if</span>(!<span class="php-var">$ctx</span>) <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(__CLASS__.<span class="php-quote">'-&gt;'</span>.__FUNCTION__.<span class="php-quote">': Invalid context!'</span>);
</span><span id="1525" class="l">      }
</span><span id="1526" class="l">
</span><span id="1527" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$aids</span>)) {
</span><span id="1528" class="l">         <span class="php-var">$ni</span> = <span class="php-var">$this</span>-&gt;get_ids_byAid(<span class="php-var">$aids</span>, <span class="php-keyword1">true</span>, <span class="php-keyword1">true</span>);
</span><span id="1529" class="l">         <span class="php-keyword1">if</span>(<span class="php-var">$ni</span> &amp;&amp; <span class="php-var">$ctx</span>) <span class="php-var">$ni</span> = <span class="php-var">$ctx</span>-&gt;_filter(<span class="php-var">$ni</span>);
</span><span id="1530" class="l">         <span class="php-keyword1">if</span>(!<span class="php-var">$ni</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_nl_</span>;
</span><span id="1531" class="l">         <span class="php-keyword1">if</span>(<span class="php-var">$name</span>) <span class="php-var">$ni</span> = <span class="php-keyword2">array_intersect_key</span>(<span class="php-var">$ni</span>, <span class="php-var">$this</span>-&gt;tag_idx[<span class="php-var">$name</span>]);
</span><span id="1532" class="l">      }
</span><span id="1533" class="l">      <span class="php-keyword1">else</span> {
</span><span id="1534" class="l">         <span class="php-keyword1">if</span>(<span class="php-var">$name</span>) {
</span><span id="1535" class="l">            <span class="php-var">$ni</span> = <span class="php-var">$this</span>-&gt;tag_idx[<span class="php-var">$name</span>];
</span><span id="1536" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$ni</span> &amp;&amp; <span class="php-var">$ctx</span>) <span class="php-var">$ni</span> = <span class="php-var">$ctx</span>-&gt;_filter(<span class="php-var">$ni</span>);
</span><span id="1537" class="l">         }
</span><span id="1538" class="l">         <span class="php-keyword1">else</span> {
</span><span id="1539" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$ctx</span>) <span class="php-var">$ni</span> = <span class="php-var">$ctx</span>-&gt;_sub_ids(<span class="php-keyword1">false</span>);
</span><span id="1540" class="l">            <span class="php-keyword1">else</span> <span class="php-var">$ni</span> = <span class="php-var">$this</span>-&gt;ids; <span class="php-comment">// all tags</span>
</span><span id="1541" class="l">         }
</span><span id="1542" class="l">      }
</span><span id="1543" class="l">
</span><span id="1544" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$ni</span> ? <span class="php-var">$ni</span> : self::<span class="php-var">$_nl_</span>;
</span><span id="1545" class="l">   }
</span><span id="1546" class="l">
</span><span id="1547" class="l">   <span class="php-comment">/**
</span></span><span id="1548" class="l"><span class="php-comment">    * @return false - no class, 0 - doesn't have class, true - has class, [ids.cl]
</span></span><span id="1549" class="l"><span class="php-comment">    */</span>
</span><span id="1550" class="l">   <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> hasClass(<span class="php-var">$id</span>, <span class="php-var">$cl</span>) {
</span><span id="1551" class="l">      <span class="php-keyword1">if</span>(!<span class="php-keyword2">is_array</span>(<span class="php-var">$cl</span>)) <span class="php-var">$cl</span> = <span class="php-keyword2">preg_split</span>(<span class="php-quote">'|\\s+|'</span>,<span class="php-keyword2">trim</span>(<span class="php-var">$cl</span>));
</span><span id="1552" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$id</span>)) {
</span><span id="1553" class="l">         <span class="php-var">$ret</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="1554" class="l">         <span class="php-keyword1">foreach</span>(<span class="php-var">$id</span> <span class="php-keyword1">as</span> <span class="php-var">$id</span> =&gt; <span class="php-var">$e</span>) {
</span><span id="1555" class="l">            <span class="php-var">$c</span> = <span class="php-var">$this</span>-&gt;hasClass(<span class="php-var">$id</span>, <span class="php-var">$cl</span>);
</span><span id="1556" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$c</span>) <span class="php-var">$ret</span>[<span class="php-var">$id</span>] = <span class="php-var">$e</span>;
</span><span id="1557" class="l">            <span class="php-keyword1">elseif</span>(<span class="php-var">$c</span> === <span class="php-keyword1">false</span>) <span class="php-keyword1">return</span> <span class="php-var">$c</span>;
</span><span id="1558" class="l">         }
</span><span id="1559" class="l">         <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="1560" class="l">      }
</span><span id="1561" class="l">      <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;<span class="php-var">$attrs</span>[<span class="php-var">$id</span>])) <span class="php-keyword1">return</span> <span class="php-num">0</span>;    <span class="php-comment">// $id has no attributes at all (but indexed)</span>
</span><span id="1562" class="l">      <span class="php-keyword1">foreach</span>(<span class="php-var">$cl</span> <span class="php-keyword1">as</span> <span class="php-var">$cl</span>) {
</span><span id="1563" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;class_idx[<span class="php-var">$cl</span>])) <span class="php-keyword1">return</span> self::<span class="php-var">$_fl_</span>; <span class="php-comment">// class doesn't exist</span>
</span><span id="1564" class="l">        <span class="php-var">$cl</span> = <span class="php-var">$this</span>-&gt;class_idx[<span class="php-var">$cl</span>];
</span><span id="1565" class="l">        <span class="php-var">$aid</span> = <span class="php-var">$this</span>-&gt;attrs[<span class="php-var">$id</span>];
</span><span id="1566" class="l">        <span class="php-keyword1">if</span>(!(<span class="php-keyword2">is_array</span>(<span class="php-var">$cl</span>) ? <span class="php-keyword1">isset</span>(<span class="php-var">$cl</span>[<span class="php-var">$aid</span>]) : <span class="php-var">$cl</span> == <span class="php-var">$aid</span>)) <span class="php-keyword1">return</span> <span class="php-num">0</span>;
</span><span id="1567" class="l">      }
</span><span id="1568" class="l">      <span class="php-keyword1">return</span> self::<span class="php-var">$_tr_</span>;
</span><span id="1569" class="l">   }
</span><span id="1570" class="l">
</span><span id="1571" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> filter(<span class="php-var">$ids</span>, <span class="php-var">$name</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$class</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$attr</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$ctx</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="1572" class="l">      <span class="php-var">$aids</span> = <span class="php-keyword1">NULL</span>;
</span><span id="1573" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$class</span>) {
</span><span id="1574" class="l">         <span class="php-keyword1">if</span>(<span class="php-var">$attr</span>)    <span class="php-var">$aids</span> = <span class="php-var">$this</span>-&gt;get_aids_byClassAttr(<span class="php-var">$class</span>, <span class="php-var">$attr</span>, <span class="php-keyword1">true</span>);
</span><span id="1575" class="l">         <span class="php-keyword1">else</span>         <span class="php-var">$aids</span> = <span class="php-var">$this</span>-&gt;get_aids_byClass(<span class="php-var">$class</span>, <span class="php-keyword1">true</span>);
</span><span id="1576" class="l">         <span class="php-keyword1">if</span>(!<span class="php-var">$aids</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_nl_</span>;
</span><span id="1577" class="l">      }
</span><span id="1578" class="l">      <span class="php-keyword1">elseif</span>(<span class="php-var">$attr</span>) {
</span><span id="1579" class="l">         <span class="php-var">$aids</span> = <span class="php-var">$this</span>-&gt;get_aids_byAttr(<span class="php-var">$attr</span>, <span class="php-keyword1">true</span>);
</span><span id="1580" class="l">         <span class="php-keyword1">if</span>(!<span class="php-var">$aids</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_nl_</span>;
</span><span id="1581" class="l">      }
</span><span id="1582" class="l">      <span class="php-keyword1">unset</span>(<span class="php-var">$class</span>, <span class="php-var">$attr</span>);
</span><span id="1583" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$aids</span>) {
</span><span id="1584" class="l">         <span class="php-keyword1">foreach</span>(<span class="php-var">$ids</span> <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;attrs[<span class="php-var">$b</span>], <span class="php-var">$aids</span>[<span class="php-var">$this</span>-&gt;attrs[<span class="php-var">$b</span>]])) <span class="php-keyword1">unset</span>(<span class="php-var">$ids</span>[<span class="php-var">$b</span>]);
</span><span id="1585" class="l">         <span class="php-keyword1">if</span>(!<span class="php-var">$ids</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_nl_</span>;
</span><span id="1586" class="l">      }
</span><span id="1587" class="l">      <span class="php-keyword1">unset</span>(<span class="php-var">$aids</span>);
</span><span id="1588" class="l">
</span><span id="1589" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword2">is_string</span>(<span class="php-var">$name</span>) &amp;&amp; <span class="php-var">$name</span> !== <span class="php-quote">''</span> &amp;&amp; <span class="php-var">$name</span> != <span class="php-quote">'*'</span>) {
</span><span id="1590" class="l">         <span class="php-var">$name</span> = <span class="php-keyword2">strtolower</span>(<span class="php-keyword2">trim</span>(<span class="php-var">$name</span>));
</span><span id="1591" class="l">         <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$this</span>-&gt;tag_idx[<span class="php-var">$name</span>])) <span class="php-keyword1">return</span> self::<span class="php-var">$_nl_</span>; <span class="php-comment">// no such tag-name</span>
</span><span id="1592" class="l">         <span class="php-keyword1">foreach</span>(<span class="php-var">$ids</span> <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;tag_idx[<span class="php-var">$name</span>][<span class="php-var">$b</span>])) <span class="php-keyword1">unset</span>(<span class="php-var">$ids</span>[<span class="php-var">$b</span>]);
</span><span id="1593" class="l">         <span class="php-keyword1">if</span>(!<span class="php-var">$ids</span>) <span class="php-keyword1">return</span> self::<span class="php-var">$_nl_</span>;
</span><span id="1594" class="l">      }
</span><span id="1595" class="l">      <span class="php-keyword1">unset</span>(<span class="php-var">$name</span>);
</span><span id="1596" class="l">
</span><span id="1597" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$ctx</span>)) {
</span><span id="1598" class="l">         <span class="php-var">$ctx</span> = <span class="php-var">$this</span>-&gt;_get_ctx(<span class="php-var">$ctx</span>);
</span><span id="1599" class="l">         <span class="php-keyword1">if</span>(!<span class="php-var">$ctx</span>) <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(__CLASS__.<span class="php-quote">'-&gt;'</span>.__FUNCTION__.<span class="php-quote">': Invalid context!'</span>);
</span><span id="1600" class="l">         <span class="php-var">$ids</span> = <span class="php-var">$ctx</span>-&gt;_filter(<span class="php-var">$ids</span>);
</span><span id="1601" class="l">         <span class="php-keyword1">if</span>(!<span class="php-var">$ids</span>) <span class="php-keyword1">return</span> <span class="php-var">$ids</span>;
</span><span id="1602" class="l">      }
</span><span id="1603" class="l">      <span class="php-keyword1">unset</span>(<span class="php-var">$ctx</span>);
</span><span id="1604" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$ids</span>;
</span><span id="1605" class="l">   }
</span><span id="1606" class="l">   <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="1607" class="l">
</span><span id="1608" class="l">   <span class="php-comment">/**
</span></span><span id="1609" class="l"><span class="php-comment">    * @return [aids]
</span></span><span id="1610" class="l"><span class="php-comment">    */</span>
</span><span id="1611" class="l">   <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> get_aids_byAttr(<span class="php-var">$attr</span>, <span class="php-var">$as_keys</span>=<span class="php-keyword1">false</span>, <span class="php-var">$actx</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="1612" class="l">      <span class="php-var">$aids</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="1613" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$actx</span>) &amp;&amp; !<span class="php-var">$actx</span>) <span class="php-keyword1">return</span> <span class="php-var">$aids</span>;
</span><span id="1614" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword2">is_string</span>(<span class="php-var">$attr</span>)) <span class="php-var">$attr</span> = self::html_parseAttrStr(<span class="php-var">$attr</span>);
</span><span id="1615" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$actx</span>)
</span><span id="1616" class="l">      <span class="php-keyword1">foreach</span>(<span class="php-var">$actx</span> <span class="php-keyword1">as</span> <span class="php-var">$aid</span> =&gt; <span class="php-var">$a</span>) {
</span><span id="1617" class="l">         <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;attribs[<span class="php-var">$aid</span>])) <span class="php-keyword1">continue</span>;
</span><span id="1618" class="l">         <span class="php-var">$a</span> = <span class="php-var">$this</span>-&gt;attribs[<span class="php-var">$aid</span>];
</span><span id="1619" class="l">         <span class="php-var">$good</span> = <span class="php-keyword1">true</span>;
</span><span id="1620" class="l">         <span class="php-keyword1">foreach</span>(<span class="php-var">$attr</span> <span class="php-keyword1">as</span> <span class="php-var">$n</span> =&gt; <span class="php-var">$v</span>) <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$a</span>[<span class="php-var">$n</span>]) || <span class="php-var">$a</span>[<span class="php-var">$n</span>] !== <span class="php-var">$v</span>) { <span class="php-var">$good</span> = <span class="php-keyword1">false</span>; <span class="php-keyword1">break</span>; }
</span><span id="1621" class="l">         <span class="php-keyword1">if</span>(<span class="php-var">$good</span>) <span class="php-var">$aids</span>[<span class="php-var">$aid</span>] = <span class="php-var">$this</span>-&gt;attr_idx[<span class="php-var">$aid</span>];
</span><span id="1622" class="l">      }
</span><span id="1623" class="l">      <span class="php-keyword1">else</span>
</span><span id="1624" class="l">      <span class="php-keyword1">foreach</span>(<span class="php-var">$this</span>-&gt;attribs <span class="php-keyword1">as</span> <span class="php-var">$aid</span> =&gt; <span class="php-var">$a</span>) {
</span><span id="1625" class="l">         <span class="php-var">$good</span> = <span class="php-keyword1">true</span>;
</span><span id="1626" class="l">         <span class="php-keyword1">foreach</span>(<span class="php-var">$attr</span> <span class="php-keyword1">as</span> <span class="php-var">$n</span> =&gt; <span class="php-var">$v</span>) <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$a</span>[<span class="php-var">$n</span>]) || <span class="php-var">$a</span>[<span class="php-var">$n</span>] !== <span class="php-var">$v</span>) { <span class="php-var">$good</span> = <span class="php-keyword1">false</span>; <span class="php-keyword1">break</span>; }
</span><span id="1627" class="l">         <span class="php-keyword1">if</span>(<span class="php-var">$good</span>) <span class="php-var">$aids</span>[<span class="php-var">$aid</span>] = <span class="php-var">$this</span>-&gt;attr_idx[<span class="php-var">$aid</span>];
</span><span id="1628" class="l">      }
</span><span id="1629" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$as_keys</span> ? <span class="php-var">$aids</span> : <span class="php-keyword2">array_keys</span>(<span class="php-var">$aids</span>);
</span><span id="1630" class="l">   }
</span><span id="1631" class="l">
</span><span id="1632" class="l">   <span class="php-comment">/**
</span></span><span id="1633" class="l"><span class="php-comment">    * @return $as_keys ? [aid =&gt; id | [ids]] : [aids]
</span></span><span id="1634" class="l"><span class="php-comment">    */</span>
</span><span id="1635" class="l">   <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> get_aids_byClass(<span class="php-var">$cl</span>, <span class="php-var">$as_keys</span>=<span class="php-keyword1">false</span>, <span class="php-var">$actx</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="1636" class="l">      <span class="php-var">$aids</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="1637" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$actx</span>) &amp;&amp; !<span class="php-var">$actx</span>) <span class="php-keyword1">return</span> <span class="php-var">$aids</span>;
</span><span id="1638" class="l">      <span class="php-keyword1">if</span>(!<span class="php-keyword2">is_array</span>(<span class="php-var">$cl</span>)) <span class="php-var">$cl</span> = <span class="php-keyword2">preg_split</span>(<span class="php-quote">'|\\s+|'</span>,<span class="php-keyword2">trim</span>(<span class="php-var">$cl</span>));
</span><span id="1639" class="l">      <span class="php-keyword1">if</span>(!<span class="php-var">$cl</span>) <span class="php-var">$cl</span> = <span class="php-keyword2">array_keys</span>(<span class="php-var">$this</span>-&gt;class_idx); <span class="php-comment">// the empty set effect</span>
</span><span id="1640" class="l">      <span class="php-keyword1">foreach</span>(<span class="php-var">$cl</span> <span class="php-keyword1">as</span> <span class="php-var">$cl</span>) <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;class_idx[<span class="php-var">$cl</span>])) {
</span><span id="1641" class="l">         <span class="php-var">$aid</span> = <span class="php-var">$this</span>-&gt;class_idx[<span class="php-var">$cl</span>];
</span><span id="1642" class="l">         <span class="php-keyword1">if</span>(!<span class="php-var">$actx</span>) {
</span><span id="1643" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$aid</span>)) <span class="php-keyword1">foreach</span>(<span class="php-var">$aid</span> <span class="php-keyword1">as</span> <span class="php-var">$aid</span> =&gt; <span class="php-var">$cl</span>) <span class="php-var">$aids</span>[<span class="php-var">$aid</span>] = <span class="php-var">$cl</span>;
</span><span id="1644" class="l">            <span class="php-keyword1">else</span> <span class="php-var">$aids</span>[<span class="php-var">$aid</span>] = <span class="php-var">$this</span>-&gt;attr_idx[<span class="php-var">$aid</span>];
</span><span id="1645" class="l">         }
</span><span id="1646" class="l">         <span class="php-keyword1">else</span> {
</span><span id="1647" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$aid</span>)) <span class="php-keyword1">foreach</span>(<span class="php-var">$aid</span> <span class="php-keyword1">as</span> <span class="php-var">$aid</span> =&gt; <span class="php-var">$cl</span>) <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$actx</span>[<span class="php-var">$aids</span>])) <span class="php-var">$aids</span>[<span class="php-var">$aid</span>] = <span class="php-var">$cl</span>;
</span><span id="1648" class="l">            <span class="php-keyword1">else</span> <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$actx</span>[<span class="php-var">$aids</span>])) <span class="php-var">$aids</span>[<span class="php-var">$aid</span>] = <span class="php-var">$this</span>-&gt;attr_idx[<span class="php-var">$aid</span>];
</span><span id="1649" class="l">         }
</span><span id="1650" class="l">      }
</span><span id="1651" class="l">      <span class="php-keyword1">else</span> <span class="php-keyword1">return</span> self::<span class="php-var">$_ar_</span>; <span class="php-comment">// no such class</span>
</span><span id="1652" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$as_keys</span> ? <span class="php-var">$aids</span> : <span class="php-keyword2">array_keys</span>(<span class="php-var">$aids</span>);
</span><span id="1653" class="l">   }
</span><span id="1654" class="l">
</span><span id="1655" class="l">   <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> get_aids_byClassAttr(<span class="php-var">$cl</span>, <span class="php-var">$attr</span>, <span class="php-var">$as_keys</span>=<span class="php-keyword1">false</span>, <span class="php-var">$actx</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="1656" class="l">      <span class="php-var">$aids</span> = <span class="php-var">$this</span>-&gt;get_aids_byClass(<span class="php-var">$cl</span>, <span class="php-keyword1">true</span>, <span class="php-var">$actx</span>);
</span><span id="1657" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword2">is_string</span>(<span class="php-var">$attr</span>)) <span class="php-var">$attr</span> = self::html_parseAttrStr(<span class="php-var">$attr</span>);
</span><span id="1658" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$attr</span>) <span class="php-keyword1">foreach</span>(<span class="php-var">$aids</span> <span class="php-keyword1">as</span> <span class="php-var">$aid</span> =&gt; <span class="php-var">$ix</span>) {
</span><span id="1659" class="l">         <span class="php-var">$a</span> = <span class="php-var">$this</span>-&gt;attribs[<span class="php-var">$aid</span>];
</span><span id="1660" class="l">         <span class="php-var">$good</span> = <span class="php-keyword2">count</span>(<span class="php-var">$a</span>) &gt; <span class="php-num">1</span>; <span class="php-comment">// has only 'class' attribute</span>
</span><span id="1661" class="l">         <span class="php-keyword1">if</span>(<span class="php-var">$good</span>) <span class="php-keyword1">foreach</span>(<span class="php-var">$attr</span> <span class="php-keyword1">as</span> <span class="php-var">$n</span> =&gt; <span class="php-var">$v</span>) {
</span><span id="1662" class="l">            <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$a</span>[<span class="php-var">$n</span>]) || <span class="php-var">$a</span>[<span class="php-var">$n</span>] !== <span class="php-var">$v</span>) {
</span><span id="1663" class="l">                <span class="php-var">$good</span> = <span class="php-keyword1">false</span>;
</span><span id="1664" class="l">                <span class="php-keyword1">break</span>;
</span><span id="1665" class="l">            }
</span><span id="1666" class="l">         }
</span><span id="1667" class="l">         <span class="php-keyword1">if</span>(!<span class="php-var">$good</span>) <span class="php-keyword1">unset</span>(<span class="php-var">$aids</span>[<span class="php-var">$aid</span>]);
</span><span id="1668" class="l">      }
</span><span id="1669" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$as_keys</span> ? <span class="php-var">$aids</span> : <span class="php-keyword2">array_keys</span>(<span class="php-var">$aids</span>);
</span><span id="1670" class="l">   }
</span><span id="1671" class="l">
</span><span id="1672" class="l">   <span class="php-comment">/**
</span></span><span id="1673" class="l"><span class="php-comment">    * $has_keys == true  =&gt; $aid == [aid=&gt;[ids]]
</span></span><span id="1674" class="l"><span class="php-comment">    * $has_keys == false =&gt; $aid == [aids]
</span></span><span id="1675" class="l"><span class="php-comment">    */</span>
</span><span id="1676" class="l">   <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> get_ids_byAid(<span class="php-var">$aid</span>, <span class="php-var">$sort</span>=<span class="php-keyword1">true</span>, <span class="php-var">$has_keys</span>=<span class="php-keyword1">false</span>) {
</span><span id="1677" class="l">        <span class="php-var">$ret</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="1678" class="l">        <span class="php-keyword1">if</span>(!<span class="php-var">$has_keys</span>) <span class="php-var">$aid</span> = self::array_select(<span class="php-var">$this</span>-&gt;attr_idx, <span class="php-var">$aid</span>);
</span><span id="1679" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$aid</span> <span class="php-keyword1">as</span> <span class="php-var">$aid</span> =&gt; <span class="php-var">$aix</span>) {
</span><span id="1680" class="l">           <span class="php-keyword1">if</span>(!<span class="php-keyword2">is_array</span>(<span class="php-var">$aix</span>)) <span class="php-var">$aix</span> =<span class="php-keyword1">array</span>(<span class="php-var">$aix</span>=&gt;<span class="php-var">$this</span>-&gt;ids[<span class="php-var">$aix</span>]);
</span><span id="1681" class="l">           <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$ret</span>)) <span class="php-var">$ret</span> = <span class="php-var">$aix</span>;
</span><span id="1682" class="l">           <span class="php-keyword1">else</span> <span class="php-keyword1">foreach</span>(<span class="php-var">$aix</span> <span class="php-keyword1">as</span> <span class="php-var">$id</span> =&gt; <span class="php-var">$e</span>) <span class="php-var">$ret</span>[<span class="php-var">$id</span>] = <span class="php-var">$e</span>;
</span><span id="1683" class="l">        }
</span><span id="1684" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$sort</span> &amp;&amp; <span class="php-var">$ret</span>) <span class="php-keyword2">ksort</span>(<span class="php-var">$ret</span>);
</span><span id="1685" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="1686" class="l">   }
</span><span id="1687" class="l">
</span><span id="1688" class="l">   <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> get_ids_byAttr(<span class="php-var">$attr</span>, <span class="php-var">$sort</span>=<span class="php-keyword1">true</span>) {
</span><span id="1689" class="l">      <span class="php-var">$ret</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="1690" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword2">is_string</span>(<span class="php-var">$attr</span>)) <span class="php-var">$attr</span> = self::html_parseAttrStr(<span class="php-var">$attr</span>);
</span><span id="1691" class="l">      <span class="php-keyword1">if</span>(!<span class="php-var">$attr</span>) <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="1692" class="l">      <span class="php-var">$sat</span> = <span class="php-var">$ret</span>;
</span><span id="1693" class="l">      <span class="php-keyword1">foreach</span>(self::<span class="php-var">$_index_attribs</span> <span class="php-keyword1">as</span> <span class="php-var">$atn</span>) {
</span><span id="1694" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$attr</span>[<span class="php-var">$atn</span>])) {
</span><span id="1695" class="l">           <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$this</span>-&gt;idx_attr[<span class="php-var">$atn</span>])) <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="1696" class="l">           <span class="php-var">$sat</span>[<span class="php-var">$atn</span>] = <span class="php-var">$attr</span>[<span class="php-var">$atn</span>];
</span><span id="1697" class="l">           <span class="php-keyword1">unset</span>(<span class="php-var">$attr</span>[<span class="php-var">$atn</span>]);
</span><span id="1698" class="l">        }
</span><span id="1699" class="l">      }
</span><span id="1700" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$attr</span>) {
</span><span id="1701" class="l">        <span class="php-var">$aids</span> = <span class="php-var">$this</span>-&gt;get_aids_byAttr(<span class="php-var">$attr</span>, <span class="php-keyword1">true</span>);
</span><span id="1702" class="l">        <span class="php-keyword1">if</span>(!<span class="php-var">$aids</span>) <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="1703" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$aids</span> <span class="php-keyword1">as</span> <span class="php-var">$aid</span> =&gt; <span class="php-var">$aix</span>) {
</span><span id="1704" class="l">           <span class="php-keyword1">if</span>(!<span class="php-keyword2">is_array</span>(<span class="php-var">$aix</span>)) <span class="php-var">$aix</span> = <span class="php-keyword1">array</span>(<span class="php-var">$aix</span>=&gt;<span class="php-var">$this</span>-&gt;ids[<span class="php-var">$aix</span>]);
</span><span id="1705" class="l">           <span class="php-keyword1">foreach</span>(<span class="php-var">$aix</span> <span class="php-keyword1">as</span> <span class="php-var">$id</span> =&gt; <span class="php-var">$e</span>) {
</span><span id="1706" class="l">              <span class="php-keyword1">if</span>(<span class="php-var">$sat</span>) {
</span><span id="1707" class="l">                 <span class="php-var">$good</span> = <span class="php-keyword1">true</span>;
</span><span id="1708" class="l">                 <span class="php-keyword1">foreach</span>(<span class="php-var">$sat</span> <span class="php-keyword1">as</span> <span class="php-var">$n</span> =&gt; <span class="php-var">$v</span>) {
</span><span id="1709" class="l">                     <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;idx_attr[<span class="php-var">$n</span>][<span class="php-var">$id</span>]) || <span class="php-var">$this</span>-&gt;idx_attr[<span class="php-var">$n</span>][<span class="php-var">$id</span>] !== <span class="php-var">$v</span>) {
</span><span id="1710" class="l">                        <span class="php-var">$good</span> = <span class="php-keyword1">false</span>;
</span><span id="1711" class="l">                        <span class="php-keyword1">break</span>;
</span><span id="1712" class="l">                     }
</span><span id="1713" class="l">                 }
</span><span id="1714" class="l">                 <span class="php-keyword1">if</span>(<span class="php-var">$good</span>) <span class="php-var">$ret</span>[<span class="php-var">$id</span>] = <span class="php-var">$e</span>;
</span><span id="1715" class="l">              }
</span><span id="1716" class="l">              <span class="php-keyword1">else</span>  <span class="php-var">$ret</span>[<span class="php-var">$id</span>] = <span class="php-var">$e</span>;
</span><span id="1717" class="l">           }
</span><span id="1718" class="l">        }
</span><span id="1719" class="l">      } <span class="php-keyword1">else</span> { <span class="php-comment">// !$attr &amp;&amp; $sat</span>
</span><span id="1720" class="l">        <span class="php-var">$av</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$sat</span>); <span class="php-var">$an</span> = <span class="php-keyword2">key</span>(<span class="php-var">$sat</span>); <span class="php-keyword1">unset</span>(<span class="php-var">$sat</span>[<span class="php-var">$an</span>]);
</span><span id="1721" class="l">        <span class="php-var">$aix</span> = <span class="php-var">$this</span>-&gt;idx_attr[<span class="php-var">$an</span>];
</span><span id="1722" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$aix</span> <span class="php-keyword1">as</span> <span class="php-var">$id</span> =&gt; <span class="php-var">$v</span>) {
</span><span id="1723" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$v</span> !== <span class="php-var">$av</span>) <span class="php-keyword1">continue</span>;
</span><span id="1724" class="l">           <span class="php-var">$e</span> = <span class="php-var">$this</span>-&gt;ids[<span class="php-var">$id</span>];
</span><span id="1725" class="l">           <span class="php-keyword1">if</span>(<span class="php-var">$sat</span>) {
</span><span id="1726" class="l">                <span class="php-var">$good</span> = <span class="php-keyword1">true</span>;
</span><span id="1727" class="l">                <span class="php-keyword1">foreach</span>(<span class="php-var">$sat</span> <span class="php-keyword1">as</span> <span class="php-var">$n</span> =&gt; <span class="php-var">$v</span>) {
</span><span id="1728" class="l">                    <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;idx_attr[<span class="php-var">$n</span>][<span class="php-var">$id</span>]) || <span class="php-var">$this</span>-&gt;idx_attr[<span class="php-var">$n</span>][<span class="php-var">$id</span>] !== <span class="php-var">$v</span>) {
</span><span id="1729" class="l">                        <span class="php-var">$good</span> = <span class="php-keyword1">false</span>;
</span><span id="1730" class="l">                        <span class="php-keyword1">break</span>;
</span><span id="1731" class="l">                    }
</span><span id="1732" class="l">                }
</span><span id="1733" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$good</span>) <span class="php-var">$ret</span>[<span class="php-var">$id</span>] = <span class="php-var">$e</span>;
</span><span id="1734" class="l">           }
</span><span id="1735" class="l">           <span class="php-keyword1">else</span> {
</span><span id="1736" class="l">                <span class="php-var">$ret</span>[<span class="php-var">$id</span>] = <span class="php-var">$e</span>;
</span><span id="1737" class="l">           }
</span><span id="1738" class="l">        }
</span><span id="1739" class="l">      }
</span><span id="1740" class="l">      <span class="php-keyword1">if</span>(<span class="php-var">$sort</span>) <span class="php-keyword2">ksort</span>(<span class="php-var">$ret</span>);
</span><span id="1741" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="1742" class="l">   }
</span><span id="1743" class="l">
</span><span id="1744" class="l">   <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> get_ids_byClass(<span class="php-var">$cl</span>, <span class="php-var">$sort</span>=<span class="php-keyword1">true</span>) {
</span><span id="1745" class="l">      <span class="php-var">$aids</span> = <span class="php-var">$this</span>-&gt;get_aids_byClass(<span class="php-var">$cl</span>, <span class="php-keyword1">true</span>);
</span><span id="1746" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;get_ids_byAid(<span class="php-var">$aids</span>, <span class="php-var">$sort</span>, <span class="php-keyword1">true</span>);
</span><span id="1747" class="l">   }
</span><span id="1748" class="l">
</span><span id="1749" class="l">   <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> get_ids_byClassAttr(<span class="php-var">$cl</span>, <span class="php-var">$attr</span>, <span class="php-var">$sort</span>=<span class="php-keyword1">true</span>) {
</span><span id="1750" class="l">      <span class="php-var">$aids</span> = <span class="php-var">$this</span>-&gt;get_aids_byClassAttr(<span class="php-var">$cl</span>, <span class="php-var">$attr</span>, <span class="php-keyword1">true</span>);
</span><span id="1751" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;get_ids_byAid(<span class="php-var">$aids</span>, <span class="php-var">$sort</span>, <span class="php-keyword1">true</span>);
</span><span id="1752" class="l">   }
</span><span id="1753" class="l">
</span><span id="1754" class="l">   <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> get_attr_byAid(<span class="php-var">$aid</span>, <span class="php-var">$to_str</span>=<span class="php-keyword1">false</span>) {
</span><span id="1755" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$aid</span>)) {
</span><span id="1756" class="l">         <span class="php-var">$ret</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="1757" class="l">         <span class="php-keyword1">foreach</span>(<span class="php-var">$aid</span> <span class="php-keyword1">as</span> <span class="php-var">$aid</span>) <span class="php-var">$ret</span>[<span class="php-var">$aid</span>] = <span class="php-var">$this</span>-&gt;get_attr_byAid(<span class="php-var">$aid</span>, <span class="php-var">$to_str</span>);
</span><span id="1758" class="l">      } <span class="php-keyword1">else</span> {
</span><span id="1759" class="l">         <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;attribs[<span class="php-var">$aid</span>])) <span class="php-keyword1">return</span> self::<span class="php-var">$_fl_</span>;
</span><span id="1760" class="l">         <span class="php-var">$ret</span> = <span class="php-var">$this</span>-&gt;attribs[<span class="php-var">$aid</span>];
</span><span id="1761" class="l">         <span class="php-keyword1">if</span>(<span class="php-var">$to_str</span>) <span class="php-var">$ret</span> = self::html_attr2str(<span class="php-var">$ret</span>);
</span><span id="1762" class="l">      }
</span><span id="1763" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="1764" class="l">   }
</span><span id="1765" class="l">
</span><span id="1766" class="l">   <span class="php-keyword1">protected</span> <span class="php-keyword1">function</span> get_attr_byId(<span class="php-var">$id</span>, <span class="php-var">$attr</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$to_str</span>=<span class="php-keyword1">false</span>) {
</span><span id="1767" class="l">      <span class="php-var">$ret</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="1768" class="l">      <span class="php-keyword1">if</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$id</span>)) {
</span><span id="1769" class="l">         <span class="php-keyword1">foreach</span>(<span class="php-var">$id</span> <span class="php-keyword1">as</span> <span class="php-var">$id</span> =&gt; <span class="php-var">$e</span>) <span class="php-var">$ret</span>[<span class="php-var">$id</span>] = <span class="php-var">$this</span>-&gt;get_attr_byId(<span class="php-var">$id</span>, <span class="php-var">$attr</span>, <span class="php-var">$to_str</span>);
</span><span id="1770" class="l">      }
</span><span id="1771" class="l">      <span class="php-keyword1">else</span> {
</span><span id="1772" class="l">         <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;ids[<span class="php-var">$id</span>])) <span class="php-keyword1">return</span> self::<span class="php-var">$_fl_</span>;
</span><span id="1773" class="l">         <span class="php-var">$bu</span> = <span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;_prop[<span class="php-quote">'baseURL'</span>]);
</span><span id="1774" class="l">         <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$attr</span>)) {
</span><span id="1775" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;idx_attr[<span class="php-var">$attr</span>])) <span class="php-var">$ret</span> = @<span class="php-var">$this</span>-&gt;idx_attr[<span class="php-var">$attr</span>][<span class="php-var">$id</span>];
</span><span id="1776" class="l">            <span class="php-keyword1">else</span> <span class="php-var">$ret</span> = <span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;attrs[<span class="php-var">$id</span>], <span class="php-var">$this</span>-&gt;attribs[<span class="php-var">$ret</span>=<span class="php-var">$this</span>-&gt;attrs[<span class="php-var">$id</span>]]) ? @<span class="php-var">$this</span>-&gt;attribs[<span class="php-var">$ret</span>][<span class="php-var">$attr</span>] : self::<span class="php-var">$_nl_</span>;
</span><span id="1777" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$ret</span> &amp;&amp; <span class="php-var">$bu</span> &amp;&amp; <span class="php-keyword1">isset</span>(self::<span class="php-var">$_url_attribs</span>[<span class="php-var">$attr</span>])) {
</span><span id="1778" class="l">                <span class="php-var">$ret</span> = <span class="php-var">$this</span>-&gt;url2abs(<span class="php-var">$ret</span>);
</span><span id="1779" class="l">            }
</span><span id="1780" class="l">         }
</span><span id="1781" class="l">         <span class="php-keyword1">else</span> {
</span><span id="1782" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;attrs[<span class="php-var">$id</span>])) <span class="php-var">$ret</span> = <span class="php-var">$this</span>-&gt;attribs[<span class="php-var">$this</span>-&gt;attrs[<span class="php-var">$id</span>]];
</span><span id="1783" class="l">            <span class="php-keyword1">foreach</span>(self::<span class="php-var">$_index_attribs</span> <span class="php-keyword1">as</span> <span class="php-var">$atn</span>) {
</span><span id="1784" class="l">               <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;idx_attr[<span class="php-var">$atn</span>][<span class="php-var">$id</span>])) <span class="php-var">$ret</span>[<span class="php-var">$atn</span>] = <span class="php-var">$this</span>-&gt;idx_attr[<span class="php-var">$atn</span>][<span class="php-var">$id</span>];
</span><span id="1785" class="l">            }
</span><span id="1786" class="l">
</span><span id="1787" class="l">            <span class="php-keyword1">if</span>(!<span class="php-keyword1">empty</span>(<span class="php-var">$bu</span>)) {
</span><span id="1788" class="l">              <span class="php-keyword1">foreach</span>(self::<span class="php-var">$_url_attribs</span> <span class="php-keyword1">as</span> <span class="php-var">$n</span>) {
</span><span id="1789" class="l">                 <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$ret</span>[<span class="php-var">$n</span>])) <span class="php-var">$ret</span>[<span class="php-var">$n</span>] = <span class="php-var">$this</span>-&gt;url2abs(<span class="php-var">$ret</span>[<span class="php-var">$n</span>]);
</span><span id="1790" class="l">              }
</span><span id="1791" class="l">            }
</span><span id="1792" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$to_str</span>) <span class="php-var">$ret</span> = self::html_attr2str(<span class="php-var">$ret</span>);
</span><span id="1793" class="l">         }
</span><span id="1794" class="l">      }
</span><span id="1795" class="l">      <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="1796" class="l">   }
</span><span id="1797" class="l">};
</span><span id="1798" class="l">
</span><span id="1799" class="l"><span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="1800" class="l"><span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="1801" class="l"><span class="php-comment">/**
</span></span><span id="1802" class="l"><span class="php-comment"> *  Main Class, represents an HTML document.
</span></span><span id="1803" class="l"><span class="php-comment"> */</span>
</span><span id="1804" class="l"><span class="php-keyword1">class</span> hQuery <span class="php-keyword1">extends</span> hQuery_HTML_Parser {
</span><span id="1805" class="l">
</span><span id="1806" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="1807" class="l">    <span class="php-comment">// Response headers when using self::fromURL()</span>
</span><span id="1808" class="l">    <span class="php-keyword1">public</span> <span class="php-var">$headers</span>;
</span><span id="1809" class="l">
</span><span id="1810" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-var">$cache_path</span>;
</span><span id="1811" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-var">$cache_expires</span> = <span class="php-num">3600</span>;
</span><span id="1812" class="l">
</span><span id="1813" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="1814" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-var">$_mockup_class</span>; <span class="php-comment">// Used internally for teting</span>
</span><span id="1815" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="1816" class="l">    <span class="php-comment">/**
</span></span><span id="1817" class="l"><span class="php-comment">     *  Parse and HTML string.
</span></span><span id="1818" class="l"><span class="php-comment">     *
</span></span><span id="1819" class="l"><span class="php-comment">     *  @param string $html - source of some HTML document
</span></span><span id="1820" class="l"><span class="php-comment">     *  @param string $url  - OPTIONAL location of the document. Used for relative URLs inside the document.
</span></span><span id="1821" class="l"><span class="php-comment">     *
</span></span><span id="1822" class="l"><span class="php-comment">     *  @return hQuery $doc
</span></span><span id="1823" class="l"><span class="php-comment">     */</span>
</span><span id="1824" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> fromHTML(<span class="php-var">$html</span>, <span class="php-var">$url</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="1825" class="l">        <span class="php-var">$index_time</span> = <span class="php-keyword2">microtime</span>(<span class="php-keyword1">true</span>);
</span><span id="1826" class="l">        <span class="php-keyword1">if</span> ( <span class="php-keyword1">isset</span>(self::<span class="php-var">$_mockup_class</span>) ) {
</span><span id="1827" class="l">            <span class="php-var">$doc</span> = <span class="php-keyword1">new</span> self::<span class="php-var">$_mockup_class</span>(<span class="php-var">$html</span>, <span class="php-keyword1">false</span>);
</span><span id="1828" class="l">        }
</span><span id="1829" class="l">        <span class="php-keyword1">else</span> {
</span><span id="1830" class="l">            <span class="php-var">$doc</span> = <span class="php-keyword1">new</span> self(<span class="php-var">$html</span>, <span class="php-keyword1">false</span>);
</span><span id="1831" class="l">        }
</span><span id="1832" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$url</span>) {
</span><span id="1833" class="l">            <span class="php-var">$doc</span>-&gt;location(<span class="php-var">$url</span>);
</span><span id="1834" class="l">        }
</span><span id="1835" class="l">        <span class="php-var">$doc</span>-&gt;index();
</span><span id="1836" class="l">        <span class="php-var">$index_time</span> = <span class="php-keyword2">microtime</span>(<span class="php-keyword1">true</span>) - <span class="php-var">$index_time</span>;
</span><span id="1837" class="l">        <span class="php-var">$doc</span>-&gt;index_time = <span class="php-var">$index_time</span> * <span class="php-num">1000</span>;
</span><span id="1838" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$doc</span>;
</span><span id="1839" class="l">    }
</span><span id="1840" class="l">
</span><span id="1841" class="l">    <span class="php-comment">/**
</span></span><span id="1842" class="l"><span class="php-comment">     *  Read the HTML document from a file.
</span></span><span id="1843" class="l"><span class="php-comment">     *
</span></span><span id="1844" class="l"><span class="php-comment">     *  @param string   $filename         - a valid filename
</span></span><span id="1845" class="l"><span class="php-comment">     *  @param bool     $use_include_path - OPTIONAL passed to file_get_contents()
</span></span><span id="1846" class="l"><span class="php-comment">     *  @param resource $context          - OPTIONAL A valid context resource created with stream_context_create().
</span></span><span id="1847" class="l"><span class="php-comment">     *
</span></span><span id="1848" class="l"><span class="php-comment">     *  @return hQuery $doc
</span></span><span id="1849" class="l"><span class="php-comment">     */</span>
</span><span id="1850" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> fromFile(<span class="php-var">$filename</span>, <span class="php-var">$use_include_path</span>=<span class="php-keyword1">false</span>, <span class="php-var">$context</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="1851" class="l">        <span class="php-var">$read_time</span> = <span class="php-keyword2">microtime</span>(<span class="php-keyword1">true</span>);
</span><span id="1852" class="l">        <span class="php-var">$html</span> = <span class="php-keyword2">file_get_contents</span>(<span class="php-var">$filename</span>, <span class="php-var">$use_include_path</span>, <span class="php-var">$context</span>);
</span><span id="1853" class="l">        <span class="php-var">$read_time</span> = <span class="php-keyword2">microtime</span>(<span class="php-keyword1">true</span>) - <span class="php-var">$read_time</span>;
</span><span id="1854" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$html</span> === <span class="php-keyword1">false</span>) <span class="php-keyword1">return</span> <span class="php-var">$html</span>;
</span><span id="1855" class="l">        <span class="php-var">$doc</span> = self::fromHTML(<span class="php-var">$html</span>, <span class="php-var">$filename</span>);
</span><span id="1856" class="l">        <span class="php-var">$doc</span>-&gt;source_type = <span class="php-quote">'file'</span>;
</span><span id="1857" class="l">        <span class="php-var">$doc</span>-&gt;read_time = <span class="php-var">$read_time</span> * <span class="php-num">1000</span>;
</span><span id="1858" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$doc</span>;
</span><span id="1859" class="l">    }
</span><span id="1860" class="l">
</span><span id="1861" class="l">    <span class="php-comment">/**
</span></span><span id="1862" class="l"><span class="php-comment">     *  Fetch the HTML document from remote $url.
</span></span><span id="1863" class="l"><span class="php-comment">     *
</span></span><span id="1864" class="l"><span class="php-comment">     *  @param string        $url     - the URL of the document
</span></span><span id="1865" class="l"><span class="php-comment">     *  @param array         $headers - OPTIONAL request headers
</span></span><span id="1866" class="l"><span class="php-comment">     *  @param array|string  $body    - OPTIONAL body of the request (for POST or PUT)
</span></span><span id="1867" class="l"><span class="php-comment">     *  @param array         $options - OPTIONAL request options (see self::http_wr() for more details)
</span></span><span id="1868" class="l"><span class="php-comment">     *
</span></span><span id="1869" class="l"><span class="php-comment">     *  @return hQuery $doc
</span></span><span id="1870" class="l"><span class="php-comment">     */</span>
</span><span id="1871" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> fromURL(<span class="php-var">$url</span>, <span class="php-var">$headers</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$body</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$options</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="1872" class="l">        <span class="php-var">$opt</span> = <span class="php-keyword1">array</span>(
</span><span id="1873" class="l">            <span class="php-quote">'timeout'</span>   =&gt; <span class="php-num">7</span>,
</span><span id="1874" class="l">            <span class="php-quote">'redirects'</span> =&gt; <span class="php-num">7</span>,
</span><span id="1875" class="l">            <span class="php-quote">'close'</span>     =&gt; <span class="php-keyword1">false</span>,
</span><span id="1876" class="l">            <span class="php-quote">'decode'</span>    =&gt; <span class="php-quote">'gzip'</span>,
</span><span id="1877" class="l">            <span class="php-quote">'expires'</span>   =&gt; self::<span class="php-var">$cache_expires</span>,
</span><span id="1878" class="l">        );
</span><span id="1879" class="l">        <span class="php-var">$hd</span> = <span class="php-keyword1">array</span>(<span class="php-quote">'Accept-Charset'</span> =&gt; <span class="php-quote">'UTF-8,*'</span>);
</span><span id="1880" class="l">
</span><span id="1881" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$options</span>) <span class="php-var">$opt</span> = <span class="php-var">$options</span> + <span class="php-var">$opt</span>;
</span><span id="1882" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$headers</span>) <span class="php-var">$hd</span>  = <span class="php-var">$headers</span> + <span class="php-var">$hd</span>;
</span><span id="1883" class="l">
</span><span id="1884" class="l">        <span class="php-var">$expires</span> = <span class="php-var">$opt</span>[<span class="php-quote">'expires'</span>];
</span><span id="1885" class="l">        <span class="php-keyword1">unset</span>(<span class="php-var">$opt</span>[<span class="php-quote">'expires'</span>]);
</span><span id="1886" class="l">
</span><span id="1887" class="l">        <span class="php-keyword1">if</span>(<span class="php-num">0</span> &lt; <span class="php-var">$expires</span> <span class="php-keyword1">and</span> <span class="php-var">$dir</span> = self::<span class="php-var">$cache_path</span>) {
</span><span id="1888" class="l">            <span class="php-keyword2">ksort</span>(<span class="php-var">$opt</span>);
</span><span id="1889" class="l">            <span class="php-var">$t</span> = <span class="php-keyword2">realpath</span>(<span class="php-var">$dir</span>) <span class="php-keyword1">and</span> <span class="php-var">$dir</span> = <span class="php-var">$t</span> <span class="php-keyword1">or</span> <span class="php-keyword2">mkdir</span>(<span class="php-var">$dir</span>, <span class="php-num">0766</span>, <span class="php-keyword1">true</span>);
</span><span id="1890" class="l">            <span class="php-var">$dir</span> .= DIRECTORY_SEPARATOR;
</span><span id="1891" class="l">            <span class="php-var">$cch_id</span> = <span class="php-keyword2">hash</span>(<span class="php-quote">'sha1'</span>, <span class="php-var">$url</span>, <span class="php-keyword1">true</span>);
</span><span id="1892" class="l">            <span class="php-var">$t</span> = <span class="php-keyword2">hash</span>(<span class="php-quote">'md5'</span>, self::jsonize(<span class="php-var">$opt</span>), <span class="php-keyword1">true</span>);
</span><span id="1893" class="l">            <span class="php-var">$cch_id</span> = <span class="php-keyword2">bin2hex</span>(<span class="php-keyword2">substr</span>(<span class="php-var">$cch_id</span>, <span class="php-num">0</span>, -<span class="php-keyword2">strlen</span>(<span class="php-var">$t</span>)) . (<span class="php-keyword2">substr</span>(<span class="php-var">$cch_id</span>, -<span class="php-keyword2">strlen</span>(<span class="php-var">$t</span>)) ^ <span class="php-var">$t</span>));
</span><span id="1894" class="l">            <span class="php-var">$cch_fn</span> = <span class="php-var">$dir</span> . <span class="php-var">$cch_id</span>;
</span><span id="1895" class="l">            <span class="php-var">$ext</span> = <span class="php-keyword2">strtolower</span>(<span class="php-keyword2">strrchr</span>(<span class="php-var">$url</span>, <span class="php-quote">'.'</span>));
</span><span id="1896" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword2">strlen</span>(<span class="php-var">$ext</span>) &lt; <span class="php-num">7</span> &amp;&amp; <span class="php-keyword2">preg_match</span>(<span class="php-quote">'/^\\.[a-z0-9]+$/'</span>, <span class="php-var">$ext</span>)) {
</span><span id="1897" class="l">                <span class="php-var">$cch_fn</span> .= <span class="php-var">$ext</span>;
</span><span id="1898" class="l">            }
</span><span id="1899" class="l">            <span class="php-var">$cch_fn</span> .= <span class="php-quote">'.gz'</span>;
</span><span id="1900" class="l">            <span class="php-var">$read_time</span> = <span class="php-keyword2">microtime</span>(<span class="php-keyword1">true</span>);
</span><span id="1901" class="l">            <span class="php-var">$ret</span> = self::get_cache(<span class="php-var">$cch_fn</span>, <span class="php-var">$expires</span>, <span class="php-keyword1">false</span>);
</span><span id="1902" class="l">            <span class="php-var">$read_time</span> = <span class="php-keyword2">microtime</span>(<span class="php-keyword1">true</span>) - <span class="php-var">$read_time</span>;
</span><span id="1903" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$ret</span>) {
</span><span id="1904" class="l">                <span class="php-var">$source_type</span> = <span class="php-quote">'cache'</span>;
</span><span id="1905" class="l">                <span class="php-var">$html</span> = <span class="php-var">$ret</span>[<span class="php-num">0</span>];
</span><span id="1906" class="l">                <span class="php-var">$hdrs</span> = <span class="php-var">$ret</span>[<span class="php-num">1</span>][<span class="php-quote">'hdr'</span>];
</span><span id="1907" class="l">                <span class="php-var">$code</span> = <span class="php-var">$ret</span>[<span class="php-num">1</span>][<span class="php-quote">'code'</span>];
</span><span id="1908" class="l">                <span class="php-var">$url</span>  = <span class="php-var">$ret</span>[<span class="php-num">1</span>][<span class="php-quote">'url'</span>];
</span><span id="1909" class="l">                <span class="php-var">$cch_meta</span> = <span class="php-var">$ret</span>[<span class="php-num">1</span>];
</span><span id="1910" class="l">                self::<span class="php-var">$last_http_result</span> = (object)<span class="php-keyword1">array</span>(
</span><span id="1911" class="l">                    <span class="php-quote">'body'</span>    =&gt; <span class="php-var">$html</span>,
</span><span id="1912" class="l">                    <span class="php-quote">'code'</span>    =&gt; <span class="php-var">$code</span>,
</span><span id="1913" class="l">                    <span class="php-quote">'url'</span>     =&gt; <span class="php-var">$url</span>,
</span><span id="1914" class="l">                    <span class="php-quote">'headers'</span> =&gt; <span class="php-var">$hdrs</span>,
</span><span id="1915" class="l">                    <span class="php-quote">'cached'</span>  =&gt; <span class="php-keyword1">true</span>,
</span><span id="1916" class="l">                );
</span><span id="1917" class="l">            }
</span><span id="1918" class="l">        }
</span><span id="1919" class="l">        <span class="php-keyword1">else</span> {
</span><span id="1920" class="l">            <span class="php-var">$ret</span> = <span class="php-keyword1">NULL</span>;
</span><span id="1921" class="l">        }
</span><span id="1922" class="l">
</span><span id="1923" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword1">empty</span>(<span class="php-var">$ret</span>)) {
</span><span id="1924" class="l">            <span class="php-var">$source_type</span> = <span class="php-quote">'url'</span>;
</span><span id="1925" class="l">            <span class="php-var">$read_time</span> = <span class="php-keyword2">microtime</span>(<span class="php-keyword1">true</span>);
</span><span id="1926" class="l">            <span class="php-comment">// var_export(compact('url', 'opt', 'hd'));</span>
</span><span id="1927" class="l">            <span class="php-var">$ret</span> = self::http_wr(<span class="php-var">$url</span>, <span class="php-var">$hd</span>, <span class="php-var">$body</span>, <span class="php-var">$opt</span>);
</span><span id="1928" class="l">            <span class="php-var">$read_time</span> = <span class="php-keyword2">microtime</span>(<span class="php-keyword1">true</span>) - <span class="php-var">$read_time</span>;
</span><span id="1929" class="l">            <span class="php-var">$html</span> = <span class="php-var">$ret</span>-&gt;body;
</span><span id="1930" class="l">            <span class="php-var">$code</span> = <span class="php-var">$ret</span>-&gt;code;
</span><span id="1931" class="l">            <span class="php-var">$hdrs</span> = <span class="php-var">$ret</span>-&gt;headers;
</span><span id="1932" class="l">
</span><span id="1933" class="l">            <span class="php-comment">// Catch the redirects</span>
</span><span id="1934" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$ret</span>-&gt;url) <span class="php-var">$url</span> = <span class="php-var">$ret</span>-&gt;url;
</span><span id="1935" class="l">
</span><span id="1936" class="l">            <span class="php-keyword1">if</span>(!<span class="php-keyword1">empty</span>(<span class="php-var">$cch_fn</span>)) {
</span><span id="1937" class="l">                <span class="php-var">$save</span> = self::set_cache(<span class="php-var">$cch_fn</span>, <span class="php-var">$html</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'hdr'</span> =&gt; <span class="php-var">$hdrs</span>, <span class="php-quote">'code'</span> =&gt; <span class="php-var">$code</span>, <span class="php-quote">'url'</span> =&gt; <span class="php-var">$url</span>));
</span><span id="1938" class="l">            }
</span><span id="1939" class="l">        }
</span><span id="1940" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$code</span> != <span class="php-num">200</span>) {
</span><span id="1941" class="l">            <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;
</span><span id="1942" class="l">        }
</span><span id="1943" class="l">
</span><span id="1944" class="l">        <span class="php-var">$doc</span> = self::fromHTML(<span class="php-var">$html</span>, <span class="php-var">$url</span>);
</span><span id="1945" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$doc</span>) {
</span><span id="1946" class="l">            <span class="php-var">$doc</span>-&gt;headers = <span class="php-var">$hdrs</span>;
</span><span id="1947" class="l">            <span class="php-var">$doc</span>-&gt;source_type = <span class="php-var">$source_type</span>;
</span><span id="1948" class="l">            <span class="php-keyword1">isset</span>(<span class="php-var">$read_time</span>) <span class="php-keyword1">and</span> <span class="php-var">$doc</span>-&gt;read_time = <span class="php-var">$read_time</span> * <span class="php-num">1000</span>;
</span><span id="1949" class="l">            <span class="php-keyword1">if</span>(!<span class="php-keyword1">empty</span>(<span class="php-var">$cch_meta</span>)) <span class="php-var">$doc</span>-&gt;cch_meta = <span class="php-var">$cch_meta</span>;
</span><span id="1950" class="l">        }
</span><span id="1951" class="l">
</span><span id="1952" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$doc</span>;
</span><span id="1953" class="l">    }
</span><span id="1954" class="l">
</span><span id="1955" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="1956" class="l">    <span class="php-comment">/**
</span></span><span id="1957" class="l"><span class="php-comment">     *  Finds a collection of nodes inside current document/context (similar to jQuery.fn.find()).
</span></span><span id="1958" class="l"><span class="php-comment">     *
</span></span><span id="1959" class="l"><span class="php-comment">     *  @param string       $sel  - A valid CSS selector.
</span></span><span id="1960" class="l"><span class="php-comment">     *  @param array|string $attr - OPTIONAL attributes as string or key-value pairs.
</span></span><span id="1961" class="l"><span class="php-comment">     *  @param hQuery_Node    $ctx  - OPTIONAL the context where to search. If omitted, $this is used.
</span></span><span id="1962" class="l"><span class="php-comment">     *
</span></span><span id="1963" class="l"><span class="php-comment">     *  @return hQuery_Element collection of matched elements
</span></span><span id="1964" class="l"><span class="php-comment">     */</span>
</span><span id="1965" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> find(<span class="php-var">$sel</span>, <span class="php-var">$attr</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$ctx</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="1966" class="l">        <span class="php-var">$c</span> = <span class="php-keyword2">func_num_args</span>();
</span><span id="1967" class="l">        <span class="php-keyword1">for</span>(<span class="php-var">$i</span>=<span class="php-num">1</span>;<span class="php-var">$i</span>&lt;<span class="php-var">$c</span>;<span class="php-var">$i</span>++) {
</span><span id="1968" class="l">            <span class="php-var">$a</span> = <span class="php-keyword2">func_get_arg</span>(<span class="php-var">$i</span>);
</span><span id="1969" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword2">is_int</span>(<span class="php-var">$a</span>)) <span class="php-var">$pos</span> = <span class="php-var">$a</span>;
</span><span id="1970" class="l">            <span class="php-keyword1">elseif</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$a</span>))  <span class="php-var">$attr</span> = <span class="php-keyword2">array_merge</span>(<span class="php-var">$attr</span>, <span class="php-var">$a</span>);
</span><span id="1971" class="l">            <span class="php-keyword1">elseif</span>(<span class="php-keyword2">is_string</span>(<span class="php-var">$a</span>)) <span class="php-var">$attr</span> = <span class="php-keyword2">array_merge</span>(<span class="php-var">$attr</span>, self::html_parseAttrStr(<span class="php-var">$a</span>));
</span><span id="1972" class="l">            <span class="php-keyword1">elseif</span>(<span class="php-keyword2">is_object</span>(<span class="php-var">$a</span>)) {
</span><span id="1973" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$a</span> <span class="php-keyword1">instanceof</span> hQuery_Node) <span class="php-var">$ctx</span> = <span class="php-var">$a</span>;
</span><span id="1974" class="l">                <span class="php-keyword1">else</span> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Wrong context in '</span> . __METHOD__);
</span><span id="1975" class="l">            }
</span><span id="1976" class="l">        }
</span><span id="1977" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$ctx</span>)) <span class="php-var">$ctx</span> = <span class="php-var">$this</span>-&gt;_get_ctx(<span class="php-var">$ctx</span>);
</span><span id="1978" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$attr</span>)) <span class="php-var">$attr</span> = <span class="php-keyword1">array</span>();
</span><span id="1979" class="l">
</span><span id="1980" class="l">        <span class="php-var">$sel</span> = self::html_selector2struc(<span class="php-var">$sel</span>);
</span><span id="1981" class="l">
</span><span id="1982" class="l">        <span class="php-var">$ra</span> = <span class="php-keyword1">NULL</span>;
</span><span id="1983" class="l">        <span class="php-comment">// , //</span>
</span><span id="1984" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$sel</span> <span class="php-keyword1">as</span> <span class="php-var">$a</span>) {
</span><span id="1985" class="l">            <span class="php-var">$rb</span> = <span class="php-keyword1">NULL</span>;
</span><span id="1986" class="l">            <span class="php-var">$cx</span> = <span class="php-var">$ctx</span>;
</span><span id="1987" class="l">            <span class="php-comment">//   //</span>
</span><span id="1988" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$a</span> <span class="php-keyword1">as</span> <span class="php-var">$b</span>) {
</span><span id="1989" class="l">                <span class="php-var">$rc</span> = <span class="php-keyword1">NULL</span>;
</span><span id="1990" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$rb</span>) {
</span><span id="1991" class="l">                    <span class="php-var">$cx</span> = <span class="php-var">$this</span>-&gt;_get_ctx(<span class="php-var">$rb</span>);
</span><span id="1992" class="l">                    <span class="php-keyword1">if</span>(!<span class="php-var">$cx</span>) ; <span class="php-comment">// ??? error</span>
</span><span id="1993" class="l">                }
</span><span id="1994" class="l">                <span class="php-comment">// &gt; //</span>
</span><span id="1995" class="l">                <span class="php-keyword1">foreach</span>(<span class="php-var">$b</span> <span class="php-keyword1">as</span> <span class="php-var">$c</span>) {
</span><span id="1996" class="l">                    <span class="php-var">$at</span> = <span class="php-var">$attr</span>;
</span><span id="1997" class="l">                    <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$c</span>[<span class="php-quote">'i'</span>])) <span class="php-var">$at</span>[<span class="php-quote">'id'</span>] = <span class="php-var">$c</span>[<span class="php-quote">'i'</span>];
</span><span id="1998" class="l">                    <span class="php-comment">// x of x &gt; y &gt; ...</span>
</span><span id="1999" class="l">                    <span class="php-keyword1">if</span>(!<span class="php-var">$rc</span>) {
</span><span id="2000" class="l">                        <span class="php-var">$rc</span> = <span class="php-var">$this</span>-&gt;_find(<span class="php-var">$c</span>[<span class="php-quote">'n'</span>], <span class="php-var">$c</span>[<span class="php-quote">'c'</span>], <span class="php-var">$at</span>, <span class="php-var">$cx</span>);
</span><span id="2001" class="l">                    }
</span><span id="2002" class="l">                    <span class="php-comment">// y of x &gt; y &gt; ...</span>
</span><span id="2003" class="l">                    <span class="php-keyword1">else</span> {
</span><span id="2004" class="l">                        <span class="php-var">$ch</span> = <span class="php-var">$this</span>-&gt;_children(<span class="php-var">$rc</span>);
</span><span id="2005" class="l">                        <span class="php-var">$rc</span> = <span class="php-var">$this</span>-&gt;filter(<span class="php-var">$ch</span>, <span class="php-var">$c</span>[<span class="php-quote">'n'</span>], <span class="php-var">$c</span>[<span class="php-quote">'c'</span>], <span class="php-var">$at</span>);
</span><span id="2006" class="l">                    }
</span><span id="2007" class="l">                    <span class="php-keyword1">unset</span>(<span class="php-var">$ch</span>);
</span><span id="2008" class="l">                    <span class="php-keyword1">if</span>(!<span class="php-var">$rc</span>) <span class="php-keyword1">break</span>;
</span><span id="2009" class="l">                    <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$c</span>[<span class="php-quote">'p'</span>])) {
</span><span id="2010" class="l">                        <span class="php-keyword1">foreach</span>(<span class="php-var">$c</span>[<span class="php-quote">'p'</span>] <span class="php-keyword1">as</span> <span class="php-var">$p</span>) {
</span><span id="2011" class="l">                            <span class="php-keyword1">if</span>(<span class="php-keyword2">is_int</span>(<span class="php-var">$p</span>)) {
</span><span id="2012" class="l">                                <span class="php-keyword1">if</span>(<span class="php-var">$p</span> &lt; <span class="php-num">0</span>) <span class="php-var">$p</span> += <span class="php-keyword2">count</span>(<span class="php-var">$rc</span>);
</span><span id="2013" class="l">                                <span class="php-keyword1">if</span>(<span class="php-keyword2">count</span>(<span class="php-var">$rc</span>) &gt;= <span class="php-num">1</span> || <span class="php-var">$p</span>) {
</span><span id="2014" class="l">                                    <span class="php-var">$rc</span> = <span class="php-var">$p</span> &lt; <span class="php-num">0</span> ? <span class="php-keyword1">NULL</span> : <span class="php-keyword2">array_slice</span>(<span class="php-var">$rc</span>, <span class="php-var">$p</span>, <span class="php-num">1</span>, <span class="php-keyword1">true</span>);
</span><span id="2015" class="l">                                }
</span><span id="2016" class="l">                            }
</span><span id="2017" class="l">                            <span class="php-keyword1">elseif</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$p</span>)) {
</span><span id="2018" class="l">                                <span class="php-var">$ch</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$p</span>);
</span><span id="2019" class="l">                                <span class="php-keyword1">switch</span>(<span class="php-keyword2">key</span>(<span class="php-var">$p</span>)) {
</span><span id="2020" class="l">                                    <span class="php-keyword1">case</span> <span class="php-quote">'&lt;'</span>: <span class="php-var">$rc</span> = <span class="php-keyword2">array_slice</span>(<span class="php-var">$rc</span>, <span class="php-num">0</span>, <span class="php-var">$ch</span>, <span class="php-keyword1">true</span>);          <span class="php-keyword1">break</span>;
</span><span id="2021" class="l">                                    <span class="php-keyword1">case</span> <span class="php-quote">'&gt;'</span>: <span class="php-var">$rc</span> = <span class="php-keyword2">array_slice</span>(<span class="php-var">$rc</span>, <span class="php-var">$ch</span>, <span class="php-keyword2">count</span>(<span class="php-var">$rc</span>), <span class="php-keyword1">true</span>); <span class="php-keyword1">break</span>;
</span><span id="2022" class="l">                                    <span class="php-keyword1">case</span> <span class="php-quote">'-'</span>: <span class="php-var">$rc</span> = <span class="php-var">$this</span>-&gt;_prev(<span class="php-var">$rc</span>, <span class="php-var">$ch</span>); <span class="php-keyword1">break</span>;
</span><span id="2023" class="l">                                    <span class="php-keyword1">case</span> <span class="php-quote">'+'</span>: <span class="php-var">$rc</span> = <span class="php-var">$this</span>-&gt;_next(<span class="php-var">$rc</span>, <span class="php-var">$ch</span>); <span class="php-keyword1">break</span>;
</span><span id="2024" class="l">                                    <span class="php-keyword1">case</span> <span class="php-quote">'|'</span>: <span class="php-keyword1">do</span> <span class="php-var">$rc</span> = <span class="php-var">$this</span>-&gt;_parent(<span class="php-var">$rc</span>);   <span class="php-keyword1">while</span>(<span class="php-var">$ch</span>-- &gt; <span class="php-num">0</span>); <span class="php-keyword1">break</span>;
</span><span id="2025" class="l">                                    <span class="php-keyword1">case</span> <span class="php-quote">'*'</span>: <span class="php-keyword1">do</span> <span class="php-var">$rc</span> = <span class="php-var">$this</span>-&gt;_children(<span class="php-var">$rc</span>); <span class="php-keyword1">while</span>(<span class="php-var">$ch</span>-- &gt; <span class="php-num">0</span>); <span class="php-keyword1">break</span>;
</span><span id="2026" class="l">                                }
</span><span id="2027" class="l">                            }
</span><span id="2028" class="l">                            <span class="php-keyword1">if</span>(!<span class="php-var">$rc</span>) <span class="php-keyword1">break</span> <span class="php-num">2</span>;
</span><span id="2029" class="l">                        }
</span><span id="2030" class="l">                    }
</span><span id="2031" class="l">                }
</span><span id="2032" class="l">                <span class="php-var">$rb</span> = <span class="php-var">$rc</span>;
</span><span id="2033" class="l">                <span class="php-keyword1">if</span>(!<span class="php-var">$rb</span>) <span class="php-keyword1">break</span>;
</span><span id="2034" class="l">            }
</span><span id="2035" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$rc</span>) <span class="php-keyword1">if</span>(!<span class="php-var">$ra</span>) <span class="php-var">$ra</span> = <span class="php-var">$rc</span>; <span class="php-keyword1">else</span> { <span class="php-keyword1">foreach</span>(<span class="php-var">$rc</span> <span class="php-keyword1">as</span> <span class="php-var">$rb</span> =&gt; <span class="php-var">$rc</span>) <span class="php-var">$ra</span>[<span class="php-var">$rb</span>] = <span class="php-var">$rc</span>; }
</span><span id="2036" class="l">        }
</span><span id="2037" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$ra</span>) {
</span><span id="2038" class="l">            <span class="php-keyword2">ksort</span>(<span class="php-var">$ra</span>);
</span><span id="2039" class="l">            <span class="php-keyword1">return</span> <span class="php-keyword1">new</span> hQuery_Element(<span class="php-var">$this</span>, <span class="php-var">$ra</span>);
</span><span id="2040" class="l">        }
</span><span id="2041" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword1">NULL</span>;
</span><span id="2042" class="l">    }
</span><span id="2043" class="l">
</span><span id="2044" class="l">    <span class="php-comment">/**
</span></span><span id="2045" class="l"><span class="php-comment">     *  Combination of -&gt;find() + -&gt;html()
</span></span><span id="2046" class="l"><span class="php-comment">     *
</span></span><span id="2047" class="l"><span class="php-comment">     *  @param string       $sel  - A valid CSS selector.
</span></span><span id="2048" class="l"><span class="php-comment">     *  @param array|string $attr - OPTIONAL attributes as string or key-value pairs.
</span></span><span id="2049" class="l"><span class="php-comment">     *  @param hQuery_Node    $ctx  - OPTIONAL the context where to search. If omitted, $this is used.
</span></span><span id="2050" class="l"><span class="php-comment">     *
</span></span><span id="2051" class="l"><span class="php-comment">     *  @return array list of HTML contents of all matched elements
</span></span><span id="2052" class="l"><span class="php-comment">     */</span>
</span><span id="2053" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> find_html(<span class="php-var">$sel</span>, <span class="php-var">$attr</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$ctx</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="2054" class="l">        <span class="php-var">$r</span> = <span class="php-var">$this</span>-&gt;find(<span class="php-var">$sel</span>, <span class="php-var">$attr</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$ctx</span>=<span class="php-keyword1">NULL</span>);
</span><span id="2055" class="l">        <span class="php-var">$ret</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="2056" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$r</span>) <span class="php-keyword1">foreach</span>(<span class="php-var">$r</span> <span class="php-keyword1">as</span> <span class="php-var">$k</span> =&gt; <span class="php-var">$v</span>) <span class="php-var">$ret</span>[<span class="php-var">$k</span>] = <span class="php-var">$v</span>-&gt;html();
</span><span id="2057" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="2058" class="l">    }
</span><span id="2059" class="l">
</span><span id="2060" class="l">    <span class="php-comment">/**
</span></span><span id="2061" class="l"><span class="php-comment">     *  Combination of -&gt;find() + -&gt;text()
</span></span><span id="2062" class="l"><span class="php-comment">     *
</span></span><span id="2063" class="l"><span class="php-comment">     *  @param string       $sel  - A valid CSS selector.
</span></span><span id="2064" class="l"><span class="php-comment">     *  @param array|string $attr - OPTIONAL attributes as string or key-value pairs.
</span></span><span id="2065" class="l"><span class="php-comment">     *  @param hQuery_Node    $ctx  - OPTIONAL the context where to search. If omitted, $this is used.
</span></span><span id="2066" class="l"><span class="php-comment">     *
</span></span><span id="2067" class="l"><span class="php-comment">     *  @return array list of Text contents of all matched elements
</span></span><span id="2068" class="l"><span class="php-comment">     */</span>
</span><span id="2069" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> find_text(<span class="php-var">$sel</span>, <span class="php-var">$attr</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$ctx</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="2070" class="l">        <span class="php-var">$r</span> = <span class="php-var">$this</span>-&gt;find(<span class="php-var">$sel</span>, <span class="php-var">$attr</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$ctx</span>=<span class="php-keyword1">NULL</span>);
</span><span id="2071" class="l">        <span class="php-var">$ret</span> = self::<span class="php-var">$_ar_</span>;
</span><span id="2072" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$r</span>) <span class="php-keyword1">foreach</span>(<span class="php-var">$r</span> <span class="php-keyword1">as</span> <span class="php-var">$k</span> =&gt; <span class="php-var">$v</span>) <span class="php-var">$ret</span>[<span class="php-var">$k</span>] = <span class="php-var">$v</span>-&gt;text();
</span><span id="2073" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="2074" class="l">    }
</span><span id="2075" class="l">
</span><span id="2076" class="l">    <span class="php-comment">/**
</span></span><span id="2077" class="l"><span class="php-comment">     * Index elements of the source HTML. (Called automatically)
</span></span><span id="2078" class="l"><span class="php-comment">     */</span>
</span><span id="2079" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> index() { <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;_index_all(); }
</span><span id="2080" class="l">
</span><span id="2081" class="l">    <span class="php-comment">// - Helpers ------------------------------------------------</span>
</span><span id="2082" class="l">
</span><span id="2083" class="l">    <span class="php-comment">// ---------------------------------------------------------------</span>
</span><span id="2084" class="l">    <span class="php-comment">/**
</span></span><span id="2085" class="l"><span class="php-comment">     *  Serialize $data as JSON, fallback to serialize.
</span></span><span id="2086" class="l"><span class="php-comment">     *
</span></span><span id="2087" class="l"><span class="php-comment">     *  @param mixed   $data - the data to be serialized
</span></span><span id="2088" class="l"><span class="php-comment">     *  @param &amp;string $type - returns the serialization method used ('json' | 'ser')
</span></span><span id="2089" class="l"><span class="php-comment">     *
</span></span><span id="2090" class="l"><span class="php-comment">     *  @return string the serialized data
</span></span><span id="2091" class="l"><span class="php-comment">     */</span>
</span><span id="2092" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> jsonize(<span class="php-var">$data</span>, &amp;<span class="php-var">$type</span> = <span class="php-keyword1">NULL</span>, <span class="php-var">$ops</span> = <span class="php-num">0</span>) {
</span><span id="2093" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">defined</span>(<span class="php-quote">'JSON_UNESCAPED_UNICODE'</span>)) {
</span><span id="2094" class="l">            <span class="php-var">$ops</span> |= JSON_UNESCAPED_UNICODE;
</span><span id="2095" class="l">        }
</span><span id="2096" class="l">        <span class="php-var">$str</span> = <span class="php-var">$ops</span> ? <span class="php-keyword2">json_encode</span>(<span class="php-var">$data</span>, <span class="php-var">$ops</span>) : <span class="php-keyword2">json_encode</span>(<span class="php-var">$data</span>);
</span><span id="2097" class="l">        <span class="php-keyword1">if</span>( <span class="php-var">$str</span> === <span class="php-keyword1">false</span> <span class="php-comment">/*&amp;&amp; json_last_error() != JSON_ERROR_NONE*/</span> ) {
</span><span id="2098" class="l">            <span class="php-var">$str</span> = <span class="php-keyword2">serialize</span>(<span class="php-var">$data</span>);
</span><span id="2099" class="l">            <span class="php-var">$type</span> = <span class="php-quote">'ser'</span>;
</span><span id="2100" class="l">        }
</span><span id="2101" class="l">        <span class="php-keyword1">else</span> {
</span><span id="2102" class="l">            <span class="php-var">$type</span> = <span class="php-quote">'json'</span>;
</span><span id="2103" class="l">        }
</span><span id="2104" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$str</span>;
</span><span id="2105" class="l">    }
</span><span id="2106" class="l">
</span><span id="2107" class="l">    <span class="php-comment">/**
</span></span><span id="2108" class="l"><span class="php-comment">     *  Unserialize $data from either JSON or serialize.
</span></span><span id="2109" class="l"><span class="php-comment">     *
</span></span><span id="2110" class="l"><span class="php-comment">     *  @param string  $str  - the data to be unserialized
</span></span><span id="2111" class="l"><span class="php-comment">     *  @param &amp;string $type - if not set, returns the serialization method detected ('json' | 'ser');
</span></span><span id="2112" class="l"><span class="php-comment">     *                          if set, forces unjsonize() to use this method for unserialization.
</span></span><span id="2113" class="l"><span class="php-comment">     *
</span></span><span id="2114" class="l"><span class="php-comment">     *  @return mixed the unserialized data
</span></span><span id="2115" class="l"><span class="php-comment">     */</span>
</span><span id="2116" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> unjsonize(<span class="php-var">$str</span>, &amp;<span class="php-var">$type</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="2117" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$type</span>)) {
</span><span id="2118" class="l">            <span class="php-var">$type</span> = self::serjstype(<span class="php-var">$str</span>);
</span><span id="2119" class="l">        }
</span><span id="2120" class="l">        <span class="php-keyword1">static</span> <span class="php-var">$_json_support</span>;
</span><span id="2121" class="l">        <span class="php-keyword1">if</span> ( !<span class="php-keyword1">isset</span>(<span class="php-var">$_json_support</span>) ) {
</span><span id="2122" class="l">            <span class="php-var">$_json_support</span> = <span class="php-num">0</span>;
</span><span id="2123" class="l">            <span class="php-comment">// PHP 5 &gt;= 5.3.0</span>
</span><span id="2124" class="l">            <span class="php-keyword1">if</span> ( <span class="php-keyword2">function_exists</span>(<span class="php-quote">'json_last_error'</span>) ) {
</span><span id="2125" class="l">                ++<span class="php-var">$_json_support</span>;
</span><span id="2126" class="l">                <span class="php-comment">// PHP 5 &gt;= 5.5.0</span>
</span><span id="2127" class="l">                <span class="php-keyword1">if</span> ( <span class="php-keyword2">function_exists</span>(<span class="php-quote">'json_last_error_msg'</span>) ) {
</span><span id="2128" class="l">                    ++<span class="php-var">$_json_support</span>;
</span><span id="2129" class="l">                }
</span><span id="2130" class="l">            }
</span><span id="2131" class="l">        }
</span><span id="2132" class="l">        <span class="php-keyword1">switch</span>(<span class="php-var">$type</span>) {
</span><span id="2133" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'ser'</span>: {
</span><span id="2134" class="l">                <span class="php-var">$data</span> = @<span class="php-keyword2">unserialize</span>(<span class="php-var">$str</span>);
</span><span id="2135" class="l">                <span class="php-keyword1">if</span> ( <span class="php-var">$data</span> === <span class="php-keyword1">false</span> ) {
</span><span id="2136" class="l">                    <span class="php-keyword1">if</span> ( <span class="php-keyword2">strpos</span>(<span class="php-var">$str</span>, <span class="php-quote">&quot;\n&quot;</span>) !== <span class="php-keyword1">false</span> ) {
</span><span id="2137" class="l">                        <span class="php-keyword1">if</span> ( <span class="php-var">$retry</span> = <span class="php-keyword2">strpos</span>(<span class="php-var">$str</span>, <span class="php-quote">&quot;\r&quot;</span>) === <span class="php-keyword1">false</span> ) {
</span><span id="2138" class="l">                            <span class="php-var">$str</span> = <span class="php-keyword2">str_replace</span>(<span class="php-quote">&quot;\n&quot;</span>, <span class="php-quote">&quot;\r\n&quot;</span>, <span class="php-var">$str</span>);
</span><span id="2139" class="l">                        }
</span><span id="2140" class="l">                        <span class="php-keyword1">elseif</span> ( <span class="php-var">$retry</span> = <span class="php-keyword2">strpos</span>(<span class="php-var">$str</span>, <span class="php-quote">&quot;\r\n&quot;</span>) !== <span class="php-keyword1">false</span> ) {
</span><span id="2141" class="l">                            <span class="php-var">$str</span> = <span class="php-keyword2">str_replace</span>(<span class="php-quote">&quot;\r\n&quot;</span>, <span class="php-quote">&quot;\n&quot;</span>, <span class="php-var">$str</span>);
</span><span id="2142" class="l">                        }
</span><span id="2143" class="l">                        <span class="php-var">$retry</span> <span class="php-keyword1">and</span> <span class="php-var">$data</span> = <span class="php-keyword2">unserialize</span>(<span class="php-var">$str</span>);
</span><span id="2144" class="l">                    }
</span><span id="2145" class="l">                }
</span><span id="2146" class="l">            } <span class="php-keyword1">break</span>;
</span><span id="2147" class="l">
</span><span id="2148" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'json'</span>: {
</span><span id="2149" class="l">                <span class="php-var">$data</span> = <span class="php-keyword2">json_decode</span>(<span class="php-var">$str</span>, <span class="php-keyword1">true</span>);
</span><span id="2150" class="l">                <span class="php-comment">// Check for errors only if $data is NULL</span>
</span><span id="2151" class="l">                <span class="php-keyword1">if</span> ( <span class="php-keyword2">is_null</span>(<span class="php-var">$data</span>) ) {
</span><span id="2152" class="l">                    <span class="php-comment">// If can't decode JSON, try to remove trailing commans in arrays and objects:</span>
</span><span id="2153" class="l">                    <span class="php-keyword1">if</span>( <span class="php-var">$_json_support</span> == <span class="php-num">0</span> ? <span class="php-var">$str</span> !== <span class="php-quote">'null'</span> : <span class="php-keyword2">json_last_error</span>() != JSON_ERROR_NONE ) {
</span><span id="2154" class="l">                        <span class="php-var">$t</span> = <span class="php-keyword2">preg_replace</span>(<span class="php-quote">'/,\s*([\]\}])/m'</span>, <span class="php-quote">'$1'</span>, <span class="php-var">$str</span>) <span class="php-keyword1">and</span>
</span><span id="2155" class="l">                        <span class="php-var">$data</span> = <span class="php-keyword2">json_decode</span>(<span class="php-var">$t</span>, <span class="php-keyword1">true</span>);
</span><span id="2156" class="l">                    }
</span><span id="2157" class="l">                    <span class="php-keyword1">if</span>( <span class="php-keyword2">is_null</span>(<span class="php-var">$data</span>) ) {
</span><span id="2158" class="l">                        <span class="php-comment">// PHP 5 &gt;= 5.3.0</span>
</span><span id="2159" class="l">                        <span class="php-keyword1">if</span> ( <span class="php-var">$_json_support</span> ) {
</span><span id="2160" class="l">                            <span class="php-keyword1">if</span> ( <span class="php-keyword2">json_last_error</span>() != JSON_ERROR_NONE ) {
</span><span id="2161" class="l">                                <span class="php-comment">// PHP 5 &gt;= 5.5.0</span>
</span><span id="2162" class="l">                                <span class="php-keyword1">if</span> ( <span class="php-var">$_json_support</span> &gt; <span class="php-num">1</span> ) {
</span><span id="2163" class="l">                                    <span class="php-keyword2">error_log</span>(<span class="php-quote">'json_decode: '</span> . json_last_error_msg());
</span><span id="2164" class="l">                                }
</span><span id="2165" class="l">                                <span class="php-keyword1">elseif</span>( <span class="php-var">$_json_support</span> &gt; <span class="php-num">0</span> ) {
</span><span id="2166" class="l">                                    <span class="php-keyword2">error_log</span>(<span class="php-quote">&quot;json_decode error with code #&quot;</span>.<span class="php-keyword2">json_last_error</span>());
</span><span id="2167" class="l">                                }
</span><span id="2168" class="l">                            }
</span><span id="2169" class="l">                        }
</span><span id="2170" class="l">                        <span class="php-comment">// PHP 5 &lt; 5.3.0</span>
</span><span id="2171" class="l">                        <span class="php-keyword1">else</span> {
</span><span id="2172" class="l">                            <span class="php-comment">// Only 'null' should result in NULL</span>
</span><span id="2173" class="l">                            <span class="php-keyword1">if</span> ( <span class="php-var">$str</span> !== <span class="php-quote">'null'</span> ) {
</span><span id="2174" class="l">                                <span class="php-keyword2">error_log</span>(<span class="php-quote">&quot;json_decode error&quot;</span>);
</span><span id="2175" class="l">                            }
</span><span id="2176" class="l">                        }
</span><span id="2177" class="l">                    }
</span><span id="2178" class="l">                }
</span><span id="2179" class="l">            } <span class="php-keyword1">break</span>;
</span><span id="2180" class="l">
</span><span id="2181" class="l">            <span class="php-keyword1">default</span>: { <span class="php-comment">// at least try!</span>
</span><span id="2182" class="l">                <span class="php-var">$data</span> = <span class="php-keyword2">json_decode</span>(<span class="php-var">$str</span>, <span class="php-keyword1">true</span>);
</span><span id="2183" class="l">                <span class="php-keyword1">if</span>( <span class="php-keyword2">is_null</span>(<span class="php-var">$data</span>) &amp;&amp; (<span class="php-var">$_json_support</span> == <span class="php-num">0</span> ? <span class="php-var">$str</span> !== <span class="php-quote">'null'</span> : <span class="php-keyword2">json_last_error</span>() != JSON_ERROR_NONE) ) {
</span><span id="2184" class="l">                    <span class="php-var">$data</span> = <span class="php-keyword2">unserialize</span>(<span class="php-var">$str</span>);
</span><span id="2185" class="l">                }
</span><span id="2186" class="l">            }
</span><span id="2187" class="l">        }
</span><span id="2188" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$data</span>;
</span><span id="2189" class="l">    }
</span><span id="2190" class="l">
</span><span id="2191" class="l">    <span class="php-comment">/**
</span></span><span id="2192" class="l"><span class="php-comment">     *  Tries to detect format of $str (json or ser).
</span></span><span id="2193" class="l"><span class="php-comment">     *
</span></span><span id="2194" class="l"><span class="php-comment">     *  @param  string $str - JSON encoded or PHP serialized data.
</span></span><span id="2195" class="l"><span class="php-comment">     *
</span></span><span id="2196" class="l"><span class="php-comment">     *  @return string 'json' | 'ser', or FALSE on failure to detect format.
</span></span><span id="2197" class="l"><span class="php-comment">     */</span>
</span><span id="2198" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> serjstype(<span class="php-var">$str</span>) {
</span><span id="2199" class="l">        <span class="php-var">$c</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$str</span>, <span class="php-num">0</span>, <span class="php-num">1</span>);
</span><span id="2200" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$str</span> === <span class="php-quote">'N;'</span> || <span class="php-keyword2">strpos</span>(<span class="php-quote">'sibadO'</span>, <span class="php-var">$c</span>) !== <span class="php-keyword1">false</span> &amp;&amp; <span class="php-keyword2">substr</span>(<span class="php-var">$str</span>, <span class="php-num">1</span>, <span class="php-num">1</span>) === <span class="php-quote">':'</span>) {
</span><span id="2201" class="l">            <span class="php-var">$type</span> = <span class="php-quote">'ser'</span>;
</span><span id="2202" class="l">        }
</span><span id="2203" class="l">        <span class="php-keyword1">else</span> {
</span><span id="2204" class="l">            <span class="php-var">$l</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$str</span>, -<span class="php-num">1</span>);
</span><span id="2205" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$c</span> == <span class="php-quote">'{'</span> &amp;&amp; <span class="php-var">$l</span> == <span class="php-quote">'}'</span> || <span class="php-var">$c</span> == <span class="php-quote">'['</span> &amp;&amp; <span class="php-var">$l</span> == <span class="php-quote">']'</span>) {
</span><span id="2206" class="l">                <span class="php-var">$type</span> = <span class="php-quote">'json'</span>;
</span><span id="2207" class="l">            }
</span><span id="2208" class="l">            <span class="php-keyword1">else</span> {
</span><span id="2209" class="l">                <span class="php-var">$type</span> = <span class="php-keyword1">false</span>; <span class="php-comment">// Unknown</span>
</span><span id="2210" class="l">            }
</span><span id="2211" class="l">        }
</span><span id="2212" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$type</span>;
</span><span id="2213" class="l">    }
</span><span id="2214" class="l">
</span><span id="2215" class="l">    <span class="php-comment">/**
</span></span><span id="2216" class="l"><span class="php-comment">     * gzdecode() (for PHP &lt; 5.4.0)
</span></span><span id="2217" class="l"><span class="php-comment">     */</span>
</span><span id="2218" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> <span class="php-keyword2">gzdecode</span>(<span class="php-var">$str</span>) {
</span><span id="2219" class="l">        <span class="php-keyword1">static</span> <span class="php-var">$_gzdecode_support</span>;
</span><span id="2220" class="l">        <span class="php-keyword1">isset</span>(<span class="php-var">$_gzdecode_support</span>) <span class="php-keyword1">or</span> <span class="php-var">$_gzdecode_support</span> = <span class="php-keyword2">function_exists</span>(<span class="php-quote">'gzdecode'</span>);
</span><span id="2221" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$_gzdecode_support</span> ? <span class="php-keyword2">gzdecode</span>(<span class="php-var">$str</span>) : self::_gzdecode(<span class="php-var">$str</span>);
</span><span id="2222" class="l">    }
</span><span id="2223" class="l">
</span><span id="2224" class="l">    <span class="php-comment">/**
</span></span><span id="2225" class="l"><span class="php-comment">     * Alternative gzdecode() (for PHP &lt; 5.4.0)
</span></span><span id="2226" class="l"><span class="php-comment">     * source: http://nl1.php.net/manual/en/function.gzdecode.php#82879
</span></span><span id="2227" class="l"><span class="php-comment">     */</span>
</span><span id="2228" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> _gzdecode(<span class="php-var">$data</span>) {
</span><span id="2229" class="l">        <span class="php-var">$len</span> = <span class="php-keyword2">strlen</span>(<span class="php-var">$data</span>);
</span><span id="2230" class="l">        <span class="php-keyword1">if</span> (<span class="php-var">$len</span> &lt; <span class="php-num">18</span> || <span class="php-keyword2">strncmp</span>(<span class="php-var">$data</span>,<span class="php-quote">&quot;\x1F\x8B&quot;</span>, <span class="php-num">2</span>)) {
</span><span id="2231" class="l">            <span class="php-keyword1">return</span> <span class="php-keyword1">null</span>;  <span class="php-comment">// Not GZIP format (See RFC 1952)</span>
</span><span id="2232" class="l">        }
</span><span id="2233" class="l">        <span class="php-var">$method</span> = <span class="php-keyword2">ord</span>(<span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-num">2</span>,<span class="php-num">1</span>));  <span class="php-comment">// Compression method</span>
</span><span id="2234" class="l">        <span class="php-var">$flags</span>  = <span class="php-keyword2">ord</span>(<span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-num">3</span>,<span class="php-num">1</span>));  <span class="php-comment">// Flags</span>
</span><span id="2235" class="l">        <span class="php-keyword1">if</span> ((<span class="php-var">$flags</span> &amp; <span class="php-num">31</span>) != <span class="php-var">$flags</span>) {
</span><span id="2236" class="l">            <span class="php-comment">// Reserved bits are set -- NOT ALLOWED by RFC 1952</span>
</span><span id="2237" class="l">            <span class="php-keyword1">return</span> <span class="php-keyword1">null</span>;
</span><span id="2238" class="l">        }
</span><span id="2239" class="l">        <span class="php-comment">// NOTE: $mtime may be negative (PHP integer limitations)</span>
</span><span id="2240" class="l">        <span class="php-var">$mtime</span> = <span class="php-keyword2">unpack</span>(<span class="php-quote">&quot;V&quot;</span>, <span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-num">4</span>,<span class="php-num">4</span>)) <span class="php-keyword1">and</span>
</span><span id="2241" class="l">        <span class="php-var">$mtime</span> = <span class="php-var">$mtime</span>[<span class="php-num">1</span>];
</span><span id="2242" class="l">        <span class="php-var">$xfl</span>   = <span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-num">8</span>,<span class="php-num">1</span>);
</span><span id="2243" class="l">        <span class="php-var">$os</span>    = <span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-num">8</span>,<span class="php-num">1</span>);
</span><span id="2244" class="l">        <span class="php-var">$headerlen</span> = <span class="php-num">10</span>;
</span><span id="2245" class="l">        <span class="php-var">$extralen</span>  = <span class="php-num">0</span>;
</span><span id="2246" class="l">        <span class="php-var">$extra</span>     = <span class="php-quote">&quot;&quot;</span>;
</span><span id="2247" class="l">        <span class="php-keyword1">if</span> (<span class="php-var">$flags</span> &amp; <span class="php-num">4</span>) {
</span><span id="2248" class="l">            <span class="php-comment">// 2-byte length prefixed EXTRA data in header</span>
</span><span id="2249" class="l">            <span class="php-keyword1">if</span> (<span class="php-var">$len</span> - <span class="php-var">$headerlen</span> - <span class="php-num">2</span> &lt; <span class="php-num">8</span>) {
</span><span id="2250" class="l">                <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;    <span class="php-comment">// Invalid format</span>
</span><span id="2251" class="l">            }
</span><span id="2252" class="l">            <span class="php-var">$extralen</span> = <span class="php-keyword2">unpack</span>(<span class="php-quote">&quot;v&quot;</span>,<span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-num">8</span>,<span class="php-num">2</span>));
</span><span id="2253" class="l">            <span class="php-var">$extralen</span> = <span class="php-var">$extralen</span>[<span class="php-num">1</span>];
</span><span id="2254" class="l">            <span class="php-keyword1">if</span> (<span class="php-var">$len</span> - <span class="php-var">$headerlen</span> - <span class="php-num">2</span> - <span class="php-var">$extralen</span> &lt; <span class="php-num">8</span>) {
</span><span id="2255" class="l">                <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;    <span class="php-comment">// Invalid format</span>
</span><span id="2256" class="l">            }
</span><span id="2257" class="l">            <span class="php-var">$extra</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-num">10</span>,<span class="php-var">$extralen</span>);
</span><span id="2258" class="l">            <span class="php-var">$headerlen</span> += <span class="php-num">2</span> + <span class="php-var">$extralen</span>;
</span><span id="2259" class="l">        }
</span><span id="2260" class="l">
</span><span id="2261" class="l">        <span class="php-var">$filenamelen</span> = <span class="php-num">0</span>;
</span><span id="2262" class="l">        <span class="php-var">$filename</span> = <span class="php-quote">&quot;&quot;</span>;
</span><span id="2263" class="l">        <span class="php-keyword1">if</span> (<span class="php-var">$flags</span> &amp; <span class="php-num">8</span>) {
</span><span id="2264" class="l">            <span class="php-comment">// C-style string file NAME data in header</span>
</span><span id="2265" class="l">            <span class="php-keyword1">if</span> (<span class="php-var">$len</span> - <span class="php-var">$headerlen</span> - <span class="php-num">1</span> &lt; <span class="php-num">8</span>) {
</span><span id="2266" class="l">                <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;    <span class="php-comment">// Invalid format</span>
</span><span id="2267" class="l">            }
</span><span id="2268" class="l">            <span class="php-var">$filenamelen</span> = <span class="php-keyword2">strpos</span>(<span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-num">8</span>+<span class="php-var">$extralen</span>),<span class="php-keyword2">chr</span>(<span class="php-num">0</span>));
</span><span id="2269" class="l">            <span class="php-keyword1">if</span> (<span class="php-var">$filenamelen</span> === <span class="php-keyword1">false</span> || <span class="php-var">$len</span> - <span class="php-var">$headerlen</span> - <span class="php-var">$filenamelen</span> - <span class="php-num">1</span> &lt; <span class="php-num">8</span>) {
</span><span id="2270" class="l">                <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;    <span class="php-comment">// Invalid format</span>
</span><span id="2271" class="l">            }
</span><span id="2272" class="l">            <span class="php-var">$filename</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-var">$headerlen</span>,<span class="php-var">$filenamelen</span>);
</span><span id="2273" class="l">            <span class="php-var">$headerlen</span> += <span class="php-var">$filenamelen</span> + <span class="php-num">1</span>;
</span><span id="2274" class="l">        }
</span><span id="2275" class="l">
</span><span id="2276" class="l">        <span class="php-var">$commentlen</span> = <span class="php-num">0</span>;
</span><span id="2277" class="l">        <span class="php-var">$comment</span> = <span class="php-quote">&quot;&quot;</span>;
</span><span id="2278" class="l">        <span class="php-keyword1">if</span> (<span class="php-var">$flags</span> &amp; <span class="php-num">16</span>) {
</span><span id="2279" class="l">            <span class="php-comment">// C-style string COMMENT data in header</span>
</span><span id="2280" class="l">            <span class="php-keyword1">if</span> (<span class="php-var">$len</span> - <span class="php-var">$headerlen</span> - <span class="php-num">1</span> &lt; <span class="php-num">8</span>) {
</span><span id="2281" class="l">                <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;    <span class="php-comment">// Invalid format</span>
</span><span id="2282" class="l">            }
</span><span id="2283" class="l">            <span class="php-var">$commentlen</span> = <span class="php-keyword2">strpos</span>(<span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-num">8</span>+<span class="php-var">$extralen</span>+<span class="php-var">$filenamelen</span>),<span class="php-keyword2">chr</span>(<span class="php-num">0</span>));
</span><span id="2284" class="l">            <span class="php-keyword1">if</span> (<span class="php-var">$commentlen</span> === <span class="php-keyword1">false</span> || <span class="php-var">$len</span> - <span class="php-var">$headerlen</span> - <span class="php-var">$commentlen</span> - <span class="php-num">1</span> &lt; <span class="php-num">8</span>) {
</span><span id="2285" class="l">                <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;    <span class="php-comment">// Invalid header format</span>
</span><span id="2286" class="l">            }
</span><span id="2287" class="l">            <span class="php-var">$comment</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-var">$headerlen</span>,<span class="php-var">$commentlen</span>);
</span><span id="2288" class="l">            <span class="php-var">$headerlen</span> += <span class="php-var">$commentlen</span> + <span class="php-num">1</span>;
</span><span id="2289" class="l">        }
</span><span id="2290" class="l">
</span><span id="2291" class="l">        <span class="php-var">$headercrc</span> = <span class="php-quote">''</span>;
</span><span id="2292" class="l">        <span class="php-keyword1">if</span> (<span class="php-var">$flags</span> &amp; <span class="php-num">1</span>) {
</span><span id="2293" class="l">            <span class="php-comment">// 2-bytes (lowest order) of CRC32 on header present</span>
</span><span id="2294" class="l">            <span class="php-keyword1">if</span> (<span class="php-var">$len</span> - <span class="php-var">$headerlen</span> - <span class="php-num">2</span> &lt; <span class="php-num">8</span>) {
</span><span id="2295" class="l">                <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;    <span class="php-comment">// Invalid format</span>
</span><span id="2296" class="l">            }
</span><span id="2297" class="l">            <span class="php-var">$calccrc</span> = <span class="php-keyword2">crc32</span>(<span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-num">0</span>,<span class="php-var">$headerlen</span>)) &amp; <span class="php-num">0xffff</span>;
</span><span id="2298" class="l">            <span class="php-var">$headercrc</span> = <span class="php-keyword2">unpack</span>(<span class="php-quote">'v'</span>, <span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-var">$headerlen</span>,<span class="php-num">2</span>));
</span><span id="2299" class="l">            <span class="php-var">$headercrc</span> = <span class="php-var">$headercrc</span>[<span class="php-num">1</span>];
</span><span id="2300" class="l">            <span class="php-keyword1">if</span> (<span class="php-var">$headercrc</span> != <span class="php-var">$calccrc</span>) {
</span><span id="2301" class="l">                <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;    <span class="php-comment">// Bad header CRC</span>
</span><span id="2302" class="l">            }
</span><span id="2303" class="l">            <span class="php-var">$headerlen</span> += <span class="php-num">2</span>;
</span><span id="2304" class="l">        }
</span><span id="2305" class="l">
</span><span id="2306" class="l">        <span class="php-comment">// GZIP FOOTER - These be negative due to PHP's limitations</span>
</span><span id="2307" class="l">        <span class="php-var">$datacrc</span> = <span class="php-keyword2">unpack</span>(<span class="php-quote">'V'</span>,<span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,-<span class="php-num">8</span>,<span class="php-num">4</span>)) <span class="php-keyword1">and</span>
</span><span id="2308" class="l">        <span class="php-var">$datacrc</span> = <span class="php-var">$datacrc</span>[<span class="php-num">1</span>];
</span><span id="2309" class="l">        <span class="php-var">$isize</span> = <span class="php-keyword2">unpack</span>(<span class="php-quote">'V'</span>,<span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,-<span class="php-num">4</span>)) <span class="php-keyword1">and</span>
</span><span id="2310" class="l">        <span class="php-var">$isize</span> = <span class="php-var">$isize</span>[<span class="php-num">1</span>];
</span><span id="2311" class="l">
</span><span id="2312" class="l">        <span class="php-comment">// Perform the decompression:</span>
</span><span id="2313" class="l">        <span class="php-var">$bodylen</span> = <span class="php-var">$len</span>-<span class="php-var">$headerlen</span>-<span class="php-num">8</span>;
</span><span id="2314" class="l">        <span class="php-keyword1">if</span> (<span class="php-var">$bodylen</span> &lt; <span class="php-num">1</span>) {
</span><span id="2315" class="l">            <span class="php-comment">// This should never happen - IMPLEMENTATION BUG!</span>
</span><span id="2316" class="l">            <span class="php-keyword1">return</span> <span class="php-keyword1">null</span>;
</span><span id="2317" class="l">        }
</span><span id="2318" class="l">        <span class="php-var">$body</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$data</span>,<span class="php-var">$headerlen</span>,<span class="php-var">$bodylen</span>);
</span><span id="2319" class="l">        <span class="php-var">$data</span> = <span class="php-quote">&quot;&quot;</span>;
</span><span id="2320" class="l">        <span class="php-keyword1">if</span> (<span class="php-var">$bodylen</span> &gt; <span class="php-num">0</span>) {
</span><span id="2321" class="l">            <span class="php-keyword1">switch</span> (<span class="php-var">$method</span>) {
</span><span id="2322" class="l">            <span class="php-keyword1">case</span> <span class="php-num">8</span>:
</span><span id="2323" class="l">                <span class="php-comment">// Currently the only supported compression method:</span>
</span><span id="2324" class="l">                <span class="php-var">$data</span> = <span class="php-keyword2">gzinflate</span>(<span class="php-var">$body</span>);
</span><span id="2325" class="l">                <span class="php-keyword1">break</span>;
</span><span id="2326" class="l">            <span class="php-keyword1">default</span>:
</span><span id="2327" class="l">                <span class="php-comment">// Unknown compression method</span>
</span><span id="2328" class="l">                <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;
</span><span id="2329" class="l">            }
</span><span id="2330" class="l">        }
</span><span id="2331" class="l">        <span class="php-keyword1">else</span> {
</span><span id="2332" class="l">            <span class="php-comment">// I'm not sure if zero-byte body content is allowed.</span>
</span><span id="2333" class="l">            <span class="php-comment">// Allow it for now...  Do nothing...</span>
</span><span id="2334" class="l">        }
</span><span id="2335" class="l">
</span><span id="2336" class="l">        <span class="php-comment">// Verifiy decompressed size and CRC32:</span>
</span><span id="2337" class="l">        <span class="php-comment">// NOTE: This may fail with large data sizes depending on how</span>
</span><span id="2338" class="l">        <span class="php-comment">//       PHP's integer limitations affect strlen() since $isize</span>
</span><span id="2339" class="l">        <span class="php-comment">//       may be negative for large sizes.</span>
</span><span id="2340" class="l">        <span class="php-keyword1">if</span> (<span class="php-var">$isize</span> != <span class="php-keyword2">strlen</span>(<span class="php-var">$data</span>) || <span class="php-keyword2">crc32</span>(<span class="php-var">$data</span>) != <span class="php-var">$datacrc</span>) {
</span><span id="2341" class="l">            <span class="php-comment">// Bad format!  Length or CRC doesn't match!</span>
</span><span id="2342" class="l">            <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;
</span><span id="2343" class="l">        }
</span><span id="2344" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$data</span>;
</span><span id="2345" class="l">    }
</span><span id="2346" class="l">
</span><span id="2347" class="l">    <span class="php-comment">/**
</span></span><span id="2348" class="l"><span class="php-comment">     *  Read data from a cache file.
</span></span><span id="2349" class="l"><span class="php-comment">     *
</span></span><span id="2350" class="l"><span class="php-comment">     *  @param string $fn        - cache filename
</span></span><span id="2351" class="l"><span class="php-comment">     *  @param int    $expire    - OPTIONAL contents returned only if it is newer then $expire seconds
</span></span><span id="2352" class="l"><span class="php-comment">     *  @param bool   $meta_only - OPTIONAL if TRUE, read only meta-info (faster)
</span></span><span id="2353" class="l"><span class="php-comment">     *
</span></span><span id="2354" class="l"><span class="php-comment">     *  @return array [mixed &lt;contents&gt;, array &lt;meta_info&gt;]
</span></span><span id="2355" class="l"><span class="php-comment">     */</span>
</span><span id="2356" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> get_cache(<span class="php-var">$fn</span>, <span class="php-var">$expire</span>=<span class="php-keyword1">false</span>, <span class="php-var">$meta_only</span>=<span class="php-keyword1">false</span>) {
</span><span id="2357" class="l">        <span class="php-var">$meta</span> = <span class="php-var">$cnt</span> = <span class="php-keyword1">NULL</span>;
</span><span id="2358" class="l">        <span class="php-keyword1">if</span>( <span class="php-var">$fm</span> = @<span class="php-keyword2">filemtime</span>(<span class="php-var">$fn</span>) <span class="php-keyword1">and</span> (!<span class="php-var">$expire</span> || <span class="php-var">$fm</span> + <span class="php-var">$expire</span> &gt; <span class="php-keyword2">time</span>()) ) {
</span><span id="2359" class="l">            <span class="php-var">$cnt</span> = self::flock_get_contents(<span class="php-var">$fn</span>);
</span><span id="2360" class="l">        }
</span><span id="2361" class="l">        <span class="php-var">$t</span> = <span class="php-keyword2">strlen</span>(<span class="php-var">$cnt</span>);
</span><span id="2362" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">empty</span>(<span class="php-var">$cnt</span>)) {
</span><span id="2363" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$gz</span> = !<span class="php-keyword2">strncmp</span>(<span class="php-var">$cnt</span>, <span class="php-quote">&quot;\x1F\x8B&quot;</span>, <span class="php-num">2</span>)) {
</span><span id="2364" class="l">                <span class="php-var">$cnt</span> = self::<span class="php-keyword2">gzdecode</span>(<span class="php-var">$cnt</span>);
</span><span id="2365" class="l">            }
</span><span id="2366" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$cnt</span>[<span class="php-num">0</span>] == <span class="php-quote">'#'</span>) {
</span><span id="2367" class="l">                <span class="php-var">$n</span> = (int)<span class="php-keyword2">substr</span>(<span class="php-var">$cnt</span>, <span class="php-num">1</span>, <span class="php-num">0x10</span>);
</span><span id="2368" class="l">                <span class="php-var">$l</span> = <span class="php-keyword2">strlen</span>(<span class="php-var">$n</span>) + <span class="php-num">2</span>;
</span><span id="2369" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$n</span>) {
</span><span id="2370" class="l">                    <span class="php-var">$meta</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$cnt</span>, <span class="php-var">$l</span>, <span class="php-var">$n</span>);
</span><span id="2371" class="l">                    <span class="php-keyword1">if</span>(<span class="php-var">$meta</span> !== <span class="php-quote">''</span>) <span class="php-var">$meta</span> = self::unjsonize(<span class="php-var">$meta</span>);
</span><span id="2372" class="l">                }
</span><span id="2373" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$meta_only</span>) <span class="php-var">$cnt</span> = <span class="php-quote">''</span>;
</span><span id="2374" class="l">                <span class="php-keyword1">else</span> {
</span><span id="2375" class="l">                    <span class="php-var">$l</span> += <span class="php-var">$n</span>;
</span><span id="2376" class="l">                    <span class="php-keyword1">if</span>(<span class="php-var">$cnt</span>[<span class="php-var">$l</span>] == <span class="php-quote">&quot;\n&quot;</span>) {
</span><span id="2377" class="l">                        <span class="php-var">$cnt</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$cnt</span>, ++<span class="php-var">$l</span>);
</span><span id="2378" class="l">                        <span class="php-keyword1">if</span>(<span class="php-var">$cnt</span> !== <span class="php-quote">''</span>) <span class="php-var">$cnt</span> = self::unjsonize(<span class="php-var">$cnt</span>);
</span><span id="2379" class="l">                    }
</span><span id="2380" class="l">                    <span class="php-keyword1">else</span> {
</span><span id="2381" class="l">                        <span class="php-var">$cnt</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$cnt</span>, <span class="php-var">$l</span>);
</span><span id="2382" class="l">                    }
</span><span id="2383" class="l">                }
</span><span id="2384" class="l">            }
</span><span id="2385" class="l">            <span class="php-keyword1">else</span> {
</span><span id="2386" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$meta_only</span>) <span class="php-var">$cnt</span> = <span class="php-quote">''</span>;
</span><span id="2387" class="l">            }
</span><span id="2388" class="l">        }
</span><span id="2389" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$cnt</span> || <span class="php-var">$meta</span> ? <span class="php-keyword1">array</span>(<span class="php-var">$cnt</span>, <span class="php-var">$meta</span>) : <span class="php-keyword1">false</span>;
</span><span id="2390" class="l">    }
</span><span id="2391" class="l">
</span><span id="2392" class="l">    <span class="php-comment">/**
</span></span><span id="2393" class="l"><span class="php-comment">     *  Save data to a cache file.
</span></span><span id="2394" class="l"><span class="php-comment">     *
</span></span><span id="2395" class="l"><span class="php-comment">     *  @param string $fn   - cache filename
</span></span><span id="2396" class="l"><span class="php-comment">     *  @param mixed  $cnt  - contents to be cached
</span></span><span id="2397" class="l"><span class="php-comment">     *  @param array  $meta - OPTIONAL meta information related to contents.
</span></span><span id="2398" class="l"><span class="php-comment">     *  @param bool   $gzip - OPTIONAL if TRUE and gzip supported, store contents gzipped
</span></span><span id="2399" class="l"><span class="php-comment">     *
</span></span><span id="2400" class="l"><span class="php-comment">     *  @return int|bool On success, number of written bytes, FALSE on fail.
</span></span><span id="2401" class="l"><span class="php-comment">     */</span>
</span><span id="2402" class="l">    <span class="php-keyword1">protected</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> set_cache(<span class="php-var">$fn</span>, <span class="php-var">$cnt</span>, <span class="php-var">$meta</span>=<span class="php-keyword1">NULL</span>, <span class="php-var">$gzip</span>=<span class="php-keyword1">true</span>) {
</span><span id="2403" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$cnt</span> === <span class="php-keyword1">false</span>) <span class="php-keyword1">return</span> !<span class="php-keyword2">file_exists</span>(<span class="php-var">$fn</span>) || <span class="php-keyword2">unlink</span>(<span class="php-var">$fn</span>);
</span><span id="2404" class="l">        <span class="php-var">$n</span> = <span class="php-num">0</span>;
</span><span id="2405" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$meta</span>)) {
</span><span id="2406" class="l">           <span class="php-var">$meta</span> = self::jsonize(<span class="php-var">$meta</span>);
</span><span id="2407" class="l">           <span class="php-var">$n</span> += <span class="php-keyword2">strlen</span>(<span class="php-var">$meta</span>);
</span><span id="2408" class="l">        }
</span><span id="2409" class="l">        <span class="php-var">$meta</span> = <span class="php-quote">'#'</span>.<span class="php-var">$n</span> . <span class="php-quote">&quot;\n&quot;</span> . <span class="php-var">$meta</span>;
</span><span id="2410" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword2">is_string</span>(<span class="php-var">$cnt</span>) || <span class="php-var">$cnt</span>[<span class="php-num">0</span>] == <span class="php-quote">&quot;\n&quot;</span>) { <span class="php-var">$cnt</span> = <span class="php-quote">&quot;\n&quot;</span> . self::jsonize(<span class="php-var">$cnt</span>); ++<span class="php-var">$n</span>; }
</span><span id="2411" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$n</span>) <span class="php-var">$cnt</span> = <span class="php-var">$meta</span> . <span class="php-var">$cnt</span>;
</span><span id="2412" class="l">        <span class="php-keyword1">unset</span>(<span class="php-var">$meta</span>);
</span><span id="2413" class="l">        @<span class="php-keyword2">mkdir</span>(<span class="php-keyword2">dirname</span>(<span class="php-var">$fn</span>), <span class="php-num">0777</span>, <span class="php-keyword1">true</span>);
</span><span id="2414" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$gzip</span>) {
</span><span id="2415" class="l">            <span class="php-var">$gl</span> = <span class="php-keyword2">is_int</span>(<span class="php-var">$gzip</span>) ? <span class="php-var">$gzip</span> : <span class="php-num">1024</span>;
</span><span id="2416" class="l">            <span class="php-comment">// Cache as gzip only if built-in gzdecode() defined (more CPU for less IO)</span>
</span><span id="2417" class="l">            <span class="php-keyword2">strlen</span>(<span class="php-var">$cnt</span>) &gt; <span class="php-var">$gl</span> &amp;&amp; <span class="php-keyword2">function_exists</span>(<span class="php-quote">'gzdecode'</span>) <span class="php-keyword1">and</span>
</span><span id="2418" class="l">            <span class="php-var">$cnt</span> = <span class="php-keyword2">gzencode</span>(<span class="php-var">$cnt</span>);
</span><span id="2419" class="l">        }
</span><span id="2420" class="l">        <span class="php-keyword1">return</span> self::flock_put_contents(<span class="php-var">$fn</span>, <span class="php-var">$cnt</span>);
</span><span id="2421" class="l">    }
</span><span id="2422" class="l">
</span><span id="2423" class="l">    <span class="php-comment">/**
</span></span><span id="2424" class="l"><span class="php-comment">     * Lock with retries
</span></span><span id="2425" class="l"><span class="php-comment">     *
</span></span><span id="2426" class="l"><span class="php-comment">     * @param resource $fp         - Open file pointer
</span></span><span id="2427" class="l"><span class="php-comment">     * @param int      $lock       - Lock type
</span></span><span id="2428" class="l"><span class="php-comment">     * @param int      $timeout_ms - OPTIONAL Timeout to wait for unlock in miliseconds
</span></span><span id="2429" class="l"><span class="php-comment">     *
</span></span><span id="2430" class="l"><span class="php-comment">     * @return true on success, false on fail
</span></span><span id="2431" class="l"><span class="php-comment">     *
</span></span><span id="2432" class="l"><span class="php-comment">     * @author Dumitru Uzun
</span></span><span id="2433" class="l"><span class="php-comment">     *
</span></span><span id="2434" class="l"><span class="php-comment">     */</span>
</span><span id="2435" class="l">    <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> do_flock(<span class="php-var">$fp</span>, <span class="php-var">$lock</span>, <span class="php-var">$timeout_ms</span>=<span class="php-num">384</span>) {
</span><span id="2436" class="l">        <span class="php-var">$l</span> = <span class="php-keyword2">flock</span>(<span class="php-var">$fp</span>, <span class="php-var">$lock</span>);
</span><span id="2437" class="l">        <span class="php-keyword1">if</span>( !<span class="php-var">$l</span> &amp;&amp; (<span class="php-var">$lock</span> &amp; LOCK_UN) != LOCK_UN ) {
</span><span id="2438" class="l">            <span class="php-var">$st</span> = <span class="php-keyword2">microtime</span>(<span class="php-keyword1">true</span>);
</span><span id="2439" class="l">            <span class="php-var">$m</span> = <span class="php-keyword2">min</span>( <span class="php-num">1e3</span>, <span class="php-var">$timeout_ms</span>*<span class="php-num">1e3</span>);
</span><span id="2440" class="l">            <span class="php-var">$n</span> = <span class="php-keyword2">min</span>(<span class="php-num">64e3</span>, <span class="php-var">$timeout_ms</span>*<span class="php-num">1e3</span>);
</span><span id="2441" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$m</span> == <span class="php-var">$n</span>) <span class="php-var">$m</span> = (<span class="php-var">$n</span> &gt;&gt; <span class="php-num">1</span>) + <span class="php-num">1</span>;
</span><span id="2442" class="l">            <span class="php-var">$timeout_ms</span> = (float)<span class="php-var">$timeout_ms</span> / <span class="php-num">1000</span>;
</span><span id="2443" class="l">            <span class="php-comment">// If lock not obtained sleep for 0 - 64 milliseconds, to avoid collision and CPU load</span>
</span><span id="2444" class="l">            <span class="php-keyword1">do</span> {
</span><span id="2445" class="l">                <span class="php-keyword2">usleep</span>(<span class="php-var">$t</span> = <span class="php-keyword2">rand</span>(<span class="php-var">$m</span>, <span class="php-var">$n</span>));
</span><span id="2446" class="l">                <span class="php-var">$l</span> = <span class="php-keyword2">flock</span>(<span class="php-var">$fp</span>, <span class="php-var">$lock</span>);
</span><span id="2447" class="l">            } <span class="php-keyword1">while</span> ( !<span class="php-var">$l</span> &amp;&amp; (<span class="php-keyword2">microtime</span>(<span class="php-keyword1">true</span>)-<span class="php-var">$st</span>) &lt; <span class="php-var">$timeout_ms</span> );
</span><span id="2448" class="l">        }
</span><span id="2449" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$l</span>;
</span><span id="2450" class="l">    }
</span><span id="2451" class="l">
</span><span id="2452" class="l">    <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> flock_put_contents(<span class="php-var">$fn</span>, <span class="php-var">$cnt</span>, <span class="php-var">$block</span>=<span class="php-keyword1">false</span>) {
</span><span id="2453" class="l">        <span class="php-comment">// return file_put_contents($fn, $cnt, $block &amp; FILE_APPEND);</span>
</span><span id="2454" class="l">        <span class="php-var">$ret</span> = <span class="php-keyword1">false</span>;
</span><span id="2455" class="l">        <span class="php-keyword1">if</span>( <span class="php-var">$f</span> = <span class="php-keyword2">fopen</span>(<span class="php-var">$fn</span>, <span class="php-quote">'c+'</span>) ) {
</span><span id="2456" class="l">            <span class="php-var">$app</span> = <span class="php-var">$block</span> &amp; FILE_APPEND <span class="php-keyword1">and</span> <span class="php-var">$block</span> ^= <span class="php-var">$app</span>;
</span><span id="2457" class="l">            <span class="php-keyword1">if</span>( <span class="php-var">$block</span> ? self::do_flock(<span class="php-var">$f</span>, LOCK_EX) : <span class="php-keyword2">flock</span>(<span class="php-var">$f</span>, LOCK_EX | LOCK_NB) ) {
</span><span id="2458" class="l">                <span class="php-keyword1">if</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$cnt</span>) || <span class="php-keyword2">is_object</span>(<span class="php-var">$cnt</span>)) <span class="php-var">$cnt</span> = self::jsonize(<span class="php-var">$cnt</span>);
</span><span id="2459" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$app</span>) <span class="php-keyword2">fseek</span>(<span class="php-var">$f</span>, <span class="php-num">0</span>, SEEK_END);
</span><span id="2460" class="l">                <span class="php-keyword1">if</span>(<span class="php-keyword1">false</span> !== (<span class="php-var">$ret</span> = <span class="php-keyword2">fwrite</span>(<span class="php-var">$f</span>, <span class="php-var">$cnt</span>))) {
</span><span id="2461" class="l">                    <span class="php-keyword2">fflush</span>(<span class="php-var">$f</span>);
</span><span id="2462" class="l">                    <span class="php-keyword2">ftruncate</span>(<span class="php-var">$f</span>, <span class="php-keyword2">ftell</span>(<span class="php-var">$f</span>));
</span><span id="2463" class="l">                }
</span><span id="2464" class="l">                <span class="php-keyword2">flock</span>(<span class="php-var">$f</span>, LOCK_UN);
</span><span id="2465" class="l">            }
</span><span id="2466" class="l">            <span class="php-keyword2">fclose</span>(<span class="php-var">$f</span>);
</span><span id="2467" class="l">        }
</span><span id="2468" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="2469" class="l">    }
</span><span id="2470" class="l">
</span><span id="2471" class="l">    <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> flock_get_contents(<span class="php-var">$fn</span>, <span class="php-var">$block</span>=<span class="php-keyword1">false</span>) {
</span><span id="2472" class="l">        <span class="php-comment">// return file_get_contents($fn);</span>
</span><span id="2473" class="l">        <span class="php-var">$ret</span> = <span class="php-keyword1">false</span>;
</span><span id="2474" class="l">        <span class="php-keyword1">if</span>( <span class="php-var">$f</span> = <span class="php-keyword2">fopen</span>(<span class="php-var">$fn</span>, <span class="php-quote">'r'</span>) ) {
</span><span id="2475" class="l">            <span class="php-keyword1">if</span>( <span class="php-keyword2">flock</span>(<span class="php-var">$f</span>, LOCK_SH | (<span class="php-var">$block</span> ? <span class="php-num">0</span> : LOCK_NB)) ) {
</span><span id="2476" class="l">                <span class="php-var">$s</span> = <span class="php-num">1</span> &lt;&lt; <span class="php-num">14</span> ;
</span><span id="2477" class="l">                <span class="php-keyword1">do</span> <span class="php-var">$ret</span> .= <span class="php-var">$r</span> = <span class="php-keyword2">fread</span>(<span class="php-var">$f</span>, <span class="php-var">$s</span>); <span class="php-keyword1">while</span>(<span class="php-var">$r</span> !== <span class="php-keyword1">false</span> &amp;&amp; !<span class="php-keyword2">feof</span>(<span class="php-var">$f</span>));
</span><span id="2478" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$ret</span> == <span class="php-keyword1">NULL</span> &amp;&amp; <span class="php-var">$r</span> === <span class="php-keyword1">false</span>) <span class="php-var">$ret</span> = <span class="php-var">$r</span>;
</span><span id="2479" class="l">                <span class="php-comment">// filesize result is cached</span>
</span><span id="2480" class="l">                <span class="php-keyword2">flock</span>(<span class="php-var">$f</span>, LOCK_UN);
</span><span id="2481" class="l">            }
</span><span id="2482" class="l">            <span class="php-keyword2">fclose</span>(<span class="php-var">$f</span>);
</span><span id="2483" class="l">        }
</span><span id="2484" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="2485" class="l">    }
</span><span id="2486" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="2487" class="l">    <span class="php-comment">/**
</span></span><span id="2488" class="l"><span class="php-comment">     * Check whether $path is a valid url.
</span></span><span id="2489" class="l"><span class="php-comment">     *
</span></span><span id="2490" class="l"><span class="php-comment">     * @param string $path - a path to check
</span></span><span id="2491" class="l"><span class="php-comment">     *
</span></span><span id="2492" class="l"><span class="php-comment">     * @return bool TRUE if $path is a valid URL, FALSE otherwise
</span></span><span id="2493" class="l"><span class="php-comment">     */</span>
</span><span id="2494" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> is_url_path(<span class="php-var">$path</span>) {
</span><span id="2495" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword2">preg_match</span>(<span class="php-quote">'/^[a-zA-Z]+\:\/\//'</span>, <span class="php-var">$path</span>);
</span><span id="2496" class="l">    }
</span><span id="2497" class="l">
</span><span id="2498" class="l">    <span class="php-comment">/**
</span></span><span id="2499" class="l"><span class="php-comment">     * Check whether $path is an absolute path.
</span></span><span id="2500" class="l"><span class="php-comment">     *
</span></span><span id="2501" class="l"><span class="php-comment">     * @param string $path - a path to check
</span></span><span id="2502" class="l"><span class="php-comment">     *
</span></span><span id="2503" class="l"><span class="php-comment">     * @return bool TRUE if $path is an absolute path, FALSE otherwise
</span></span><span id="2504" class="l"><span class="php-comment">     */</span>
</span><span id="2505" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> is_abs_path(<span class="php-var">$path</span>) {
</span><span id="2506" class="l">        <span class="php-var">$ds</span> = <span class="php-keyword1">array</span>(<span class="php-quote">'\\'</span>=&gt;<span class="php-num">1</span>,<span class="php-quote">'/'</span>=&gt;<span class="php-num">2</span>);
</span><span id="2507" class="l">        <span class="php-keyword1">if</span>( <span class="php-keyword1">isset</span>(<span class="php-var">$ds</span>[<span class="php-keyword2">substr</span>(<span class="php-var">$path</span>, <span class="php-num">0</span>, <span class="php-num">1</span>)]) ||
</span><span id="2508" class="l">            <span class="php-keyword2">substr</span>(<span class="php-var">$path</span>, <span class="php-num">1</span>, <span class="php-num">1</span>) == <span class="php-quote">':'</span> &amp;&amp; <span class="php-keyword1">isset</span>(<span class="php-var">$ds</span>[<span class="php-keyword2">substr</span>(<span class="php-var">$path</span>, <span class="php-num">2</span>, <span class="php-num">1</span>)])
</span><span id="2509" class="l">        ) {
</span><span id="2510" class="l">            <span class="php-keyword1">return</span> <span class="php-keyword1">true</span>;
</span><span id="2511" class="l">        }
</span><span id="2512" class="l">        <span class="php-keyword1">if</span>((<span class="php-var">$l</span>=<span class="php-keyword2">strpos</span>(<span class="php-var">$path</span>, <span class="php-quote">'://'</span>)) &amp;&amp; <span class="php-var">$l</span> &lt; <span class="php-num">32</span>) <span class="php-keyword1">return</span> <span class="php-var">$l</span>;
</span><span id="2513" class="l">        <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;
</span><span id="2514" class="l">    }
</span><span id="2515" class="l">
</span><span id="2516" class="l">    <span class="php-comment">/**
</span></span><span id="2517" class="l"><span class="php-comment">     * Given a $url (relative or absolute) and a $base url, returns absolute url for $url.
</span></span><span id="2518" class="l"><span class="php-comment">     *
</span></span><span id="2519" class="l"><span class="php-comment">     * @param string $url  - relative or absolute URL
</span></span><span id="2520" class="l"><span class="php-comment">     * @param string $base - Base URL for $url
</span></span><span id="2521" class="l"><span class="php-comment">     *
</span></span><span id="2522" class="l"><span class="php-comment">     * @return string absolute URL for $url
</span></span><span id="2523" class="l"><span class="php-comment">     *
</span></span><span id="2524" class="l"><span class="php-comment">     */</span>
</span><span id="2525" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> abs_url(<span class="php-var">$url</span>, <span class="php-var">$base</span>) {
</span><span id="2526" class="l">        <span class="php-keyword1">if</span> (!self::is_url_path(<span class="php-var">$url</span>)) {
</span><span id="2527" class="l">            <span class="php-var">$t</span> = <span class="php-keyword2">is_array</span>(<span class="php-var">$base</span>) ? <span class="php-var">$base</span> : <span class="php-keyword2">parse_url</span>(<span class="php-var">$base</span>);
</span><span id="2528" class="l">            <span class="php-keyword1">if</span> (<span class="php-keyword2">strncmp</span>(<span class="php-var">$url</span>, <span class="php-quote">'//'</span>, <span class="php-num">2</span>) == <span class="php-num">0</span>) {
</span><span id="2529" class="l">                <span class="php-keyword1">if</span> ( !<span class="php-keyword1">empty</span>(<span class="php-var">$t</span>[<span class="php-quote">'scheme'</span>]) ) {
</span><span id="2530" class="l">                    <span class="php-var">$url</span> = <span class="php-var">$t</span>[<span class="php-quote">'scheme'</span>] . <span class="php-quote">':'</span> . <span class="php-var">$url</span>;
</span><span id="2531" class="l">                }
</span><span id="2532" class="l">            }
</span><span id="2533" class="l">            <span class="php-keyword1">else</span> {
</span><span id="2534" class="l">                <span class="php-var">$base</span> = (<span class="php-keyword1">empty</span>(<span class="php-var">$t</span>[<span class="php-quote">'scheme'</span>]) ? <span class="php-quote">'//'</span> : <span class="php-var">$t</span>[<span class="php-quote">'scheme'</span>] . <span class="php-quote">'://'</span>) .
</span><span id="2535" class="l">                        <span class="php-var">$t</span>[<span class="php-quote">'host'</span>] . (<span class="php-keyword1">empty</span>(<span class="php-var">$t</span>[<span class="php-quote">'port'</span>]) ? <span class="php-quote">''</span> : <span class="php-quote">':'</span> . <span class="php-var">$t</span>[<span class="php-quote">'port'</span>]);
</span><span id="2536" class="l">                <span class="php-keyword1">if</span> (!<span class="php-keyword1">empty</span>(<span class="php-var">$t</span>[<span class="php-quote">'path'</span>])) {
</span><span id="2537" class="l">                    <span class="php-var">$s</span> = <span class="php-keyword2">dirname</span>(<span class="php-var">$t</span>[<span class="php-quote">'path'</span>] . <span class="php-quote">'f'</span>);
</span><span id="2538" class="l">                    <span class="php-keyword1">if</span> (DIRECTORY_SEPARATOR != <span class="php-quote">'/'</span>) {
</span><span id="2539" class="l">                        <span class="php-var">$s</span> = <span class="php-keyword2">strtr</span>(<span class="php-var">$s</span>, DIRECTORY_SEPARATOR, <span class="php-quote">'/'</span>);
</span><span id="2540" class="l">                    }
</span><span id="2541" class="l">                    <span class="php-keyword1">if</span> (<span class="php-var">$s</span> &amp;&amp; <span class="php-var">$s</span> !== <span class="php-quote">'.'</span> &amp;&amp; <span class="php-var">$s</span> !== <span class="php-quote">'/'</span> &amp;&amp; <span class="php-keyword2">substr</span>(<span class="php-var">$url</span>, <span class="php-num">0</span>, <span class="php-num">1</span>) !== <span class="php-quote">'/'</span>) {
</span><span id="2542" class="l">                        <span class="php-var">$base</span> .= <span class="php-quote">'/'</span> . <span class="php-keyword2">ltrim</span>(<span class="php-var">$s</span>, <span class="php-quote">'/'</span>);
</span><span id="2543" class="l">                    }
</span><span id="2544" class="l">                }
</span><span id="2545" class="l">                <span class="php-var">$url</span> = <span class="php-keyword2">rtrim</span>(<span class="php-var">$base</span>, <span class="php-quote">'/'</span>) . <span class="php-quote">'/'</span> . <span class="php-keyword2">ltrim</span>(<span class="php-var">$url</span>, <span class="php-quote">'/'</span>);
</span><span id="2546" class="l">            }
</span><span id="2547" class="l">        }
</span><span id="2548" class="l">        <span class="php-keyword1">else</span> {
</span><span id="2549" class="l">            <span class="php-var">$p</span> = <span class="php-keyword2">strpos</span>(<span class="php-var">$url</span>, <span class="php-quote">':'</span>);
</span><span id="2550" class="l">            <span class="php-keyword1">if</span> (<span class="php-keyword2">substr</span>(<span class="php-var">$url</span>, <span class="php-var">$p</span> + <span class="php-num">3</span>, <span class="php-num">1</span>) === <span class="php-quote">'/'</span> &amp;&amp; <span class="php-keyword2">in_array</span>(<span class="php-keyword2">substr</span>(<span class="php-var">$url</span>, <span class="php-num">0</span>, <span class="php-var">$p</span>), <span class="php-keyword1">array</span>(<span class="php-quote">'http'</span>, <span class="php-quote">'https'</span>))) {
</span><span id="2551" class="l">                <span class="php-var">$url</span> = <span class="php-keyword2">substr</span>(<span class="php-var">$url</span>, <span class="php-num">0</span>, <span class="php-var">$p</span> + <span class="php-num">3</span>) . <span class="php-keyword2">ltrim</span>(<span class="php-keyword2">substr</span>(<span class="php-var">$url</span>, <span class="php-var">$p</span> + <span class="php-num">3</span>), <span class="php-quote">'/'</span>);
</span><span id="2552" class="l">            }
</span><span id="2553" class="l">        }
</span><span id="2554" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$url</span>;
</span><span id="2555" class="l">    }
</span><span id="2556" class="l">
</span><span id="2557" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="2558" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> parse_cookie(<span class="php-var">$str</span>) {
</span><span id="2559" class="l">        <span class="php-var">$ret</span> = <span class="php-keyword1">array</span>();
</span><span id="2560" class="l">        <span class="php-keyword1">if</span> ( <span class="php-keyword2">is_array</span>(<span class="php-var">$str</span>) ) {
</span><span id="2561" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$str</span> <span class="php-keyword1">as</span> <span class="php-var">$k</span> =&gt; <span class="php-var">$v</span>) {
</span><span id="2562" class="l">                <span class="php-var">$ret</span>[<span class="php-var">$k</span>] = self::parse_cookie(<span class="php-var">$v</span>);
</span><span id="2563" class="l">            }
</span><span id="2564" class="l">            <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="2565" class="l">        }
</span><span id="2566" class="l">
</span><span id="2567" class="l">        <span class="php-var">$str</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">';'</span>, <span class="php-var">$str</span>);
</span><span id="2568" class="l">        <span class="php-var">$t</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">'='</span>, <span class="php-keyword2">array_shift</span>(<span class="php-var">$str</span>), <span class="php-num">2</span>);
</span><span id="2569" class="l">        <span class="php-var">$ret</span>[<span class="php-quote">'key'</span>] = <span class="php-var">$t</span>[<span class="php-num">0</span>];
</span><span id="2570" class="l">        <span class="php-var">$ret</span>[<span class="php-quote">'value'</span>] = <span class="php-var">$t</span>[<span class="php-num">1</span>];
</span><span id="2571" class="l">        <span class="php-keyword1">foreach</span> (<span class="php-var">$str</span> <span class="php-keyword1">as</span> <span class="php-var">$t</span>) {
</span><span id="2572" class="l">            <span class="php-var">$t</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">'='</span>, <span class="php-keyword2">trim</span>(<span class="php-var">$t</span>), <span class="php-num">2</span>);
</span><span id="2573" class="l">            <span class="php-keyword1">if</span> ( <span class="php-keyword2">count</span>(<span class="php-var">$t</span>) == <span class="php-num">2</span> ) {
</span><span id="2574" class="l">                <span class="php-var">$ret</span>[<span class="php-keyword2">strtolower</span>(<span class="php-var">$t</span>[<span class="php-num">0</span>])] = <span class="php-var">$t</span>[<span class="php-num">1</span>];
</span><span id="2575" class="l">            }
</span><span id="2576" class="l">            <span class="php-keyword1">else</span> {
</span><span id="2577" class="l">                <span class="php-var">$ret</span>[<span class="php-keyword2">strtolower</span>(<span class="php-var">$t</span>[<span class="php-num">0</span>])] = <span class="php-keyword1">true</span>;
</span><span id="2578" class="l">            }
</span><span id="2579" class="l">        }
</span><span id="2580" class="l">
</span><span id="2581" class="l">        <span class="php-keyword1">if</span> ( !<span class="php-keyword1">empty</span>(<span class="php-var">$ret</span>[<span class="php-quote">'expires'</span>]) &amp;&amp; <span class="php-keyword2">is_string</span>(<span class="php-var">$ret</span>[<span class="php-quote">'expires'</span>]) ) {
</span><span id="2582" class="l">            <span class="php-var">$t</span> = <span class="php-keyword2">strtotime</span>(<span class="php-var">$ret</span>[<span class="php-quote">'expires'</span>]);
</span><span id="2583" class="l">            <span class="php-keyword1">if</span> ( <span class="php-var">$t</span> !== <span class="php-keyword1">false</span> <span class="php-keyword1">and</span> <span class="php-var">$t</span> !== -<span class="php-num">1</span> ) {
</span><span id="2584" class="l">                <span class="php-var">$ret</span>[<span class="php-quote">'expires'</span>] = <span class="php-var">$t</span>;
</span><span id="2585" class="l">            }
</span><span id="2586" class="l">        }
</span><span id="2587" class="l">
</span><span id="2588" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="2589" class="l">    }
</span><span id="2590" class="l">
</span><span id="2591" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="2592" class="l">    <span class="php-comment">/**
</span></span><span id="2593" class="l"><span class="php-comment">     * Executes a HTTP write-read session.
</span></span><span id="2594" class="l"><span class="php-comment">     *
</span></span><span id="2595" class="l"><span class="php-comment">     * @param string $host - IP/HOST address or URL
</span></span><span id="2596" class="l"><span class="php-comment">     * @param array  $head - list off HTTP headers to be sent along with the request to $host
</span></span><span id="2597" class="l"><span class="php-comment">     * @param mixed  $body - data to be sent as the contents of the request. If is array or object, a http query is built.
</span></span><span id="2598" class="l"><span class="php-comment">     * @param array  $options - list of option as key-value:
</span></span><span id="2599" class="l"><span class="php-comment">     *                              timeout - connection timeout in seconds
</span></span><span id="2600" class="l"><span class="php-comment">     *                              host    - goes to headers, overrides $host (ex. $host == '127.0.0.1', $options['host'] == 'www.example.com')
</span></span><span id="2601" class="l"><span class="php-comment">     *                              port    - usefull when $host is not a full URL
</span></span><span id="2602" class="l"><span class="php-comment">     *                              scheme  - http, ssl, tls, udp, ...
</span></span><span id="2603" class="l"><span class="php-comment">     *                              close   - whether to close connection o not
</span></span><span id="2604" class="l"><span class="php-comment">     *                              redirects - number of allowed redirects
</span></span><span id="2605" class="l"><span class="php-comment">     *                              redirect_method - if (string), this is the new method for redirect request, else
</span></span><span id="2606" class="l"><span class="php-comment">     *                                                if true, preserve method, else use 'GET' on redirect.
</span></span><span id="2607" class="l"><span class="php-comment">     *                                                by default preserve on 307 and 308, GET on 301-303
</span></span><span id="2608" class="l"><span class="php-comment">     *
</span></span><span id="2609" class="l"><span class="php-comment">     * @return array [contents, headers, http-status-code, http-status-message]
</span></span><span id="2610" class="l"><span class="php-comment">     *
</span></span><span id="2611" class="l"><span class="php-comment">     * @author Dumitru Uzun
</span></span><span id="2612" class="l"><span class="php-comment">     *
</span></span><span id="2613" class="l"><span class="php-comment">     */</span>
</span><span id="2614" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">static</span> <span class="php-keyword1">function</span> http_wr(<span class="php-var">$host</span>, <span class="php-var">$head</span> = <span class="php-keyword1">NULL</span>, <span class="php-var">$body</span> = <span class="php-keyword1">NULL</span>, <span class="php-var">$options</span> = <span class="php-keyword1">NULL</span>) {
</span><span id="2615" class="l">        self::<span class="php-var">$last_http_result</span> =
</span><span id="2616" class="l">        <span class="php-var">$ret</span> = <span class="php-keyword1">new</span> stdClass;
</span><span id="2617" class="l">        <span class="php-keyword1">empty</span>(<span class="php-var">$options</span>) <span class="php-keyword1">and</span> <span class="php-var">$options</span> = <span class="php-keyword1">array</span>();
</span><span id="2618" class="l">
</span><span id="2619" class="l">        <span class="php-comment">// If $host is a URL</span>
</span><span id="2620" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$p</span> = <span class="php-keyword2">strpos</span>(<span class="php-var">$host</span>, <span class="php-quote">'://'</span>) <span class="php-keyword1">and</span> <span class="php-var">$p</span> &lt; <span class="php-num">7</span>) {
</span><span id="2621" class="l">            <span class="php-var">$ret</span>-&gt;url = <span class="php-var">$host</span>;
</span><span id="2622" class="l">            <span class="php-var">$p</span> = <span class="php-keyword2">parse_url</span>(<span class="php-var">$host</span>);
</span><span id="2623" class="l">            <span class="php-keyword1">if</span>(!<span class="php-var">$p</span>) {
</span><span id="2624" class="l">                <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Wrong host specified'</span>); <span class="php-comment">// error</span>
</span><span id="2625" class="l">            }
</span><span id="2626" class="l">            <span class="php-var">$host</span> = <span class="php-var">$p</span>[<span class="php-quote">'host'</span>];
</span><span id="2627" class="l">            <span class="php-var">$path</span> = @<span class="php-var">$p</span>[<span class="php-quote">'path'</span>];
</span><span id="2628" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$p</span>[<span class="php-quote">'query'</span>])) {
</span><span id="2629" class="l">                <span class="php-var">$path</span> .= <span class="php-quote">'?'</span> . <span class="php-var">$p</span>[<span class="php-quote">'query'</span>];
</span><span id="2630" class="l">            }
</span><span id="2631" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$p</span>[<span class="php-quote">'port'</span>])) {
</span><span id="2632" class="l">                <span class="php-var">$port</span> = <span class="php-var">$p</span>[<span class="php-quote">'port'</span>];
</span><span id="2633" class="l">            }
</span><span id="2634" class="l">            <span class="php-keyword1">unset</span>(<span class="php-var">$p</span>[<span class="php-quote">'path'</span>], <span class="php-var">$p</span>[<span class="php-quote">'query'</span>]);
</span><span id="2635" class="l">            <span class="php-var">$options</span> += <span class="php-var">$p</span>;
</span><span id="2636" class="l">        }
</span><span id="2637" class="l">        <span class="php-comment">// If $host is not an URL, but might contain path and port</span>
</span><span id="2638" class="l">        <span class="php-keyword1">else</span> {
</span><span id="2639" class="l">            <span class="php-var">$p</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">'/'</span>, <span class="php-var">$host</span>, <span class="php-num">2</span>); <span class="php-keyword1">list</span>(<span class="php-var">$host</span>, <span class="php-var">$path</span>) = <span class="php-var">$p</span>;
</span><span id="2640" class="l">            <span class="php-var">$p</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">':'</span>, <span class="php-var">$host</span>, <span class="php-num">2</span>); <span class="php-keyword1">list</span>(<span class="php-var">$host</span>, <span class="php-var">$port</span>) = <span class="php-var">$p</span>;
</span><span id="2641" class="l">        }
</span><span id="2642" class="l">
</span><span id="2643" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">strncmp</span>(<span class="php-var">$path</span>, <span class="php-quote">'/'</span>, <span class="php-num">1</span>)) {
</span><span id="2644" class="l">            <span class="php-var">$path</span> = <span class="php-quote">'/'</span> . <span class="php-var">$path</span>;
</span><span id="2645" class="l">        }
</span><span id="2646" class="l">        <span class="php-comment">// isset($path) or $path = '/';</span>
</span><span id="2647" class="l">
</span><span id="2648" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$port</span>)) {
</span><span id="2649" class="l">            <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$options</span>[<span class="php-quote">'port'</span>])) {
</span><span id="2650" class="l">                <span class="php-var">$port</span> = <span class="php-var">$options</span>[<span class="php-quote">'port'</span>];
</span><span id="2651" class="l">            }
</span><span id="2652" class="l">            <span class="php-keyword1">else</span> {
</span><span id="2653" class="l">                <span class="php-keyword1">switch</span>(<span class="php-var">$options</span>[<span class="php-quote">'scheme'</span>]) {
</span><span id="2654" class="l">                    <span class="php-keyword1">case</span> <span class="php-quote">'tls'</span>  :
</span><span id="2655" class="l">                    <span class="php-keyword1">case</span> <span class="php-quote">'ssl'</span>  :
</span><span id="2656" class="l">                    <span class="php-keyword1">case</span> <span class="php-quote">'https'</span>: <span class="php-var">$port</span> = <span class="php-num">443</span>; <span class="php-keyword1">break</span>;
</span><span id="2657" class="l">                    <span class="php-keyword1">case</span> <span class="php-quote">'ftp'</span>  : <span class="php-var">$port</span> = <span class="php-num">21</span>; <span class="php-keyword1">break</span>;
</span><span id="2658" class="l">                    <span class="php-keyword1">case</span> <span class="php-quote">'sftp'</span> : <span class="php-var">$port</span> = <span class="php-num">22</span>; <span class="php-keyword1">break</span>;
</span><span id="2659" class="l">                    <span class="php-keyword1">case</span> <span class="php-quote">'http'</span> :
</span><span id="2660" class="l">                    <span class="php-keyword1">default</span>     : <span class="php-var">$port</span> = <span class="php-num">80</span>;
</span><span id="2661" class="l">                }
</span><span id="2662" class="l">            }
</span><span id="2663" class="l">        }
</span><span id="2664" class="l">
</span><span id="2665" class="l">        <span class="php-var">$ret</span>-&gt;host =
</span><span id="2666" class="l">        <span class="php-var">$conhost</span> = <span class="php-var">$host</span>;
</span><span id="2667" class="l">        <span class="php-var">$_h</span> = <span class="php-keyword1">array</span>(
</span><span id="2668" class="l">            <span class="php-quote">'host'</span>   =&gt; <span class="php-keyword1">isset</span>(<span class="php-var">$options</span>[<span class="php-quote">'host'</span>]) ? <span class="php-var">$options</span>[<span class="php-quote">'host'</span>] : <span class="php-var">$host</span>,
</span><span id="2669" class="l">            <span class="php-quote">'accept'</span> =&gt; <span class="php-quote">'text/html,application/xhtml+xml,application/xml;q =0.9,*/*;q=0.8'</span>,
</span><span id="2670" class="l">        );
</span><span id="2671" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">empty</span>(<span class="php-var">$options</span>[<span class="php-quote">'scheme'</span>])) {
</span><span id="2672" class="l">            <span class="php-keyword1">switch</span>(<span class="php-var">$p</span>[<span class="php-quote">'scheme'</span>]) {
</span><span id="2673" class="l">                <span class="php-keyword1">case</span> <span class="php-quote">'http'</span>:
</span><span id="2674" class="l">                <span class="php-keyword1">case</span> <span class="php-quote">'ftp'</span>:
</span><span id="2675" class="l">                <span class="php-keyword1">break</span>;
</span><span id="2676" class="l">                <span class="php-keyword1">case</span> <span class="php-quote">'https'</span>:
</span><span id="2677" class="l">                    <span class="php-var">$conhost</span> = <span class="php-quote">'tls://'</span> . <span class="php-var">$host</span>;
</span><span id="2678" class="l">                <span class="php-keyword1">break</span>;
</span><span id="2679" class="l">                <span class="php-keyword1">default</span>:
</span><span id="2680" class="l">                    <span class="php-var">$conhost</span> = <span class="php-var">$options</span>[<span class="php-quote">'scheme'</span>] . <span class="php-quote">'://'</span> . <span class="php-var">$host</span>;
</span><span id="2681" class="l">            }
</span><span id="2682" class="l">        }
</span><span id="2683" class="l">
</span><span id="2684" class="l">        <span class="php-keyword1">static</span> <span class="php-var">$boundary</span> = <span class="php-quote">&quot;\r\n\r\n&quot;</span>;
</span><span id="2685" class="l">        <span class="php-var">$blen</span> = <span class="php-keyword2">strlen</span>(<span class="php-var">$boundary</span>);
</span><span id="2686" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$body</span>) {
</span><span id="2687" class="l">           <span class="php-keyword1">if</span>(<span class="php-keyword2">is_array</span>(<span class="php-var">$body</span>) || <span class="php-keyword2">is_object</span>(<span class="php-var">$body</span>)) {
</span><span id="2688" class="l">              <span class="php-var">$body</span> = <span class="php-keyword2">http_build_query</span>(<span class="php-var">$body</span>);
</span><span id="2689" class="l">              <span class="php-var">$_h</span>[<span class="php-quote">'content-type'</span>] = <span class="php-quote">'application/x-www-form-urlencoded'</span>;
</span><span id="2690" class="l">           }
</span><span id="2691" class="l">           <span class="php-var">$body</span> = (string)<span class="php-var">$body</span>;
</span><span id="2692" class="l">           <span class="php-var">$_h</span>[<span class="php-quote">'content-length'</span>] = <span class="php-keyword2">strlen</span>(<span class="php-var">$body</span>);
</span><span id="2693" class="l">           <span class="php-var">$body</span> .= <span class="php-var">$boundary</span>;
</span><span id="2694" class="l">           <span class="php-keyword1">empty</span>(<span class="php-var">$options</span>[<span class="php-quote">'method'</span>]) <span class="php-keyword1">and</span> <span class="php-var">$options</span>[<span class="php-quote">'method'</span>] = <span class="php-quote">'POST'</span>;
</span><span id="2695" class="l">        }
</span><span id="2696" class="l">        <span class="php-keyword1">else</span> {
</span><span id="2697" class="l">            <span class="php-var">$body</span> = <span class="php-keyword1">NULL</span>;
</span><span id="2698" class="l">        }
</span><span id="2699" class="l">
</span><span id="2700" class="l">        <span class="php-var">$meth</span> = @<span class="php-var">$options</span>[<span class="php-quote">'method'</span>] <span class="php-keyword1">and</span> <span class="php-var">$meth</span> = <span class="php-keyword2">strtoupper</span>(<span class="php-var">$meth</span>) <span class="php-keyword1">or</span> <span class="php-var">$meth</span> = <span class="php-quote">'GET'</span>;
</span><span id="2701" class="l">
</span><span id="2702" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$head</span>) {
</span><span id="2703" class="l">            <span class="php-keyword1">if</span>(!<span class="php-keyword2">is_array</span>(<span class="php-var">$head</span>)) {
</span><span id="2704" class="l">                <span class="php-var">$head</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">&quot;\r\n&quot;</span>, <span class="php-var">$head</span>);
</span><span id="2705" class="l">            }
</span><span id="2706" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$head</span> <span class="php-keyword1">as</span> <span class="php-var">$i</span> =&gt; <span class="php-var">$v</span>) {
</span><span id="2707" class="l">                <span class="php-keyword1">if</span>(<span class="php-keyword2">is_int</span>(<span class="php-var">$i</span>)) {
</span><span id="2708" class="l">                    <span class="php-var">$v</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">':'</span>, <span class="php-var">$v</span>, <span class="php-num">2</span>);
</span><span id="2709" class="l">                    <span class="php-keyword1">if</span>(<span class="php-keyword2">count</span>(<span class="php-var">$v</span>) != <span class="php-num">2</span>) <span class="php-keyword1">continue</span>; <span class="php-comment">// Invalid header</span>
</span><span id="2710" class="l">                    <span class="php-keyword1">list</span>(<span class="php-var">$i</span>, <span class="php-var">$v</span>) = <span class="php-var">$v</span>;
</span><span id="2711" class="l">                }
</span><span id="2712" class="l">                <span class="php-var">$i</span> = <span class="php-keyword2">strtolower</span>(<span class="php-keyword2">strtr</span>(<span class="php-var">$i</span>, <span class="php-quote">' _'</span>, <span class="php-quote">'--'</span>));
</span><span id="2713" class="l">                <span class="php-var">$_h</span>[<span class="php-var">$i</span>] = <span class="php-keyword2">trim</span>(<span class="php-var">$v</span>);
</span><span id="2714" class="l">            }
</span><span id="2715" class="l">        }
</span><span id="2716" class="l">
</span><span id="2717" class="l">        <span class="php-keyword1">if</span>(@<span class="php-var">$options</span>[<span class="php-quote">'decode'</span>] == <span class="php-quote">'gzip'</span>) {
</span><span id="2718" class="l">            <span class="php-comment">// if(function_exists('gzdecode')) {</span>
</span><span id="2719" class="l">                <span class="php-var">$_h</span>[<span class="php-quote">'accept-encoding'</span>] = <span class="php-quote">'gzip'</span>;
</span><span id="2720" class="l">            <span class="php-comment">// }</span>
</span><span id="2721" class="l">            <span class="php-comment">// else {</span>
</span><span id="2722" class="l">                <span class="php-comment">// $options['decode'] = NULL;</span>
</span><span id="2723" class="l">            <span class="php-comment">// }</span>
</span><span id="2724" class="l">        }
</span><span id="2725" class="l">
</span><span id="2726" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$options</span>[<span class="php-quote">'close'</span>]) || @<span class="php-var">$options</span>[<span class="php-quote">'close'</span>]) {
</span><span id="2727" class="l">            <span class="php-var">$_h</span>[<span class="php-quote">'connection'</span>] = <span class="php-quote">'close'</span>;
</span><span id="2728" class="l">        }
</span><span id="2729" class="l">        <span class="php-keyword1">else</span> {
</span><span id="2730" class="l">            <span class="php-var">$_h</span>[<span class="php-quote">'connection'</span>] = <span class="php-quote">'keep-alive'</span>;
</span><span id="2731" class="l">        }
</span><span id="2732" class="l">
</span><span id="2733" class="l">        <span class="php-var">$prot</span> = <span class="php-keyword1">empty</span>(<span class="php-var">$options</span>[<span class="php-quote">'protocol'</span>]) ? <span class="php-quote">'HTTP/1.1'</span> : <span class="php-var">$options</span>[<span class="php-quote">'protocol'</span>];
</span><span id="2734" class="l">
</span><span id="2735" class="l">        <span class="php-var">$head</span> = <span class="php-keyword1">array</span>(<span class="php-quote">&quot;</span><span class="php-var">$meth</span><span class="php-quote"> </span><span class="php-var">$path</span><span class="php-quote"> </span><span class="php-var">$prot</span><span class="php-quote">&quot;</span>);
</span><span id="2736" class="l">        <span class="php-keyword1">foreach</span>(<span class="php-var">$_h</span> <span class="php-keyword1">as</span> <span class="php-var">$i</span> =&gt; <span class="php-var">$v</span>) {
</span><span id="2737" class="l">            <span class="php-var">$i</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">'-'</span>, <span class="php-var">$i</span>);
</span><span id="2738" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$i</span> <span class="php-keyword1">as</span> &amp;<span class="php-var">$j</span>) <span class="php-var">$j</span> = <span class="php-keyword2">ucfirst</span>(<span class="php-var">$j</span>);
</span><span id="2739" class="l">            <span class="php-var">$i</span> = <span class="php-keyword2">implode</span>(<span class="php-quote">'-'</span>, <span class="php-var">$i</span>);
</span><span id="2740" class="l">            <span class="php-var">$head</span>[] = <span class="php-var">$i</span> . <span class="php-quote">': '</span> . <span class="php-var">$v</span>;
</span><span id="2741" class="l">        }
</span><span id="2742" class="l">        <span class="php-var">$rqst</span> = <span class="php-keyword2">implode</span>(<span class="php-quote">&quot;\r\n&quot;</span>, <span class="php-var">$head</span>) . <span class="php-var">$boundary</span> . <span class="php-var">$body</span>;
</span><span id="2743" class="l">        <span class="php-var">$head</span> = <span class="php-keyword1">NULL</span>; <span class="php-comment">// free mem</span>
</span><span id="2744" class="l">
</span><span id="2745" class="l">        <span class="php-var">$timeout</span> = <span class="php-keyword1">isset</span>(<span class="php-var">$options</span>[<span class="php-quote">'timeout'</span>]) ? <span class="php-var">$options</span>[<span class="php-quote">'timeout'</span>] : @<span class="php-keyword2">ini_get</span>(<span class="php-quote">&quot;default_socket_timeout&quot;</span>);
</span><span id="2746" class="l">
</span><span id="2747" class="l">        <span class="php-var">$ret</span>-&gt;options = <span class="php-var">$options</span>;
</span><span id="2748" class="l">
</span><span id="2749" class="l">        <span class="php-comment">// ------------------- Connection and data transfer -------------------</span>
</span><span id="2750" class="l">        <span class="php-var">$errno</span>  = <span class="php-num">0</span>;
</span><span id="2751" class="l">        <span class="php-var">$errstr</span> =
</span><span id="2752" class="l">        <span class="php-var">$rsps</span>   = <span class="php-quote">''</span>;
</span><span id="2753" class="l">        <span class="php-var">$h</span> = <span class="php-var">$_rh</span> = <span class="php-keyword1">NULL</span>;
</span><span id="2754" class="l">        <span class="php-var">$fs</span> = @<span class="php-keyword2">fsockopen</span>(<span class="php-var">$conhost</span>, <span class="php-var">$port</span>, <span class="php-var">$errno</span>, <span class="php-var">$errstr</span>, <span class="php-var">$timeout</span>);
</span><span id="2755" class="l">        <span class="php-keyword1">if</span>(!<span class="php-var">$fs</span>) {
</span><span id="2756" class="l">            <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'unable to create socket &quot;'</span>.<span class="php-var">$conhost</span>.<span class="php-quote">':'</span>.<span class="php-var">$port</span>.<span class="php-quote">'&quot; '</span>.<span class="php-var">$errstr</span>, <span class="php-var">$errno</span>);
</span><span id="2757" class="l">        }
</span><span id="2758" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword2">fwrite</span>(<span class="php-var">$fs</span>, <span class="php-var">$rqst</span>)) {
</span><span id="2759" class="l">            <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">&quot;unable to write&quot;</span>);
</span><span id="2760" class="l">        }
</span><span id="2761" class="l">        <span class="php-keyword1">else</span> {
</span><span id="2762" class="l">            <span class="php-var">$l</span> = <span class="php-var">$blen</span> - <span class="php-num">1</span>;
</span><span id="2763" class="l">            <span class="php-comment">// read headers</span>
</span><span id="2764" class="l">            <span class="php-keyword1">while</span>(<span class="php-var">$open</span> = !<span class="php-keyword2">feof</span>(<span class="php-var">$fs</span>) &amp;&amp; (<span class="php-var">$p</span> = @<span class="php-keyword2">fgets</span>(<span class="php-var">$fs</span>, <span class="php-num">1024</span>))) {
</span><span id="2765" class="l">                <span class="php-keyword1">if</span>(<span class="php-var">$p</span> == <span class="php-quote">&quot;\r\n&quot;</span>) <span class="php-keyword1">break</span>;
</span><span id="2766" class="l">                <span class="php-var">$rsps</span> .= <span class="php-var">$p</span>;
</span><span id="2767" class="l">            }
</span><span id="2768" class="l">
</span><span id="2769" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$rsps</span>) {
</span><span id="2770" class="l">                <span class="php-var">$h</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">&quot;\r\n&quot;</span>, <span class="php-keyword2">rtrim</span>(<span class="php-var">$rsps</span>));
</span><span id="2771" class="l">                <span class="php-keyword1">list</span>(<span class="php-var">$rprot</span>, <span class="php-var">$rcode</span>, <span class="php-var">$rmsg</span>) = <span class="php-keyword2">explode</span>(<span class="php-quote">' '</span>, <span class="php-keyword2">array_shift</span>(<span class="php-var">$h</span>), <span class="php-num">3</span>);
</span><span id="2772" class="l">                <span class="php-keyword1">foreach</span>(<span class="php-var">$h</span> <span class="php-keyword1">as</span> <span class="php-var">$v</span>) {
</span><span id="2773" class="l">                    <span class="php-var">$v</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">':'</span>, <span class="php-var">$v</span>, <span class="php-num">2</span>);
</span><span id="2774" class="l">                    <span class="php-var">$k</span> = <span class="php-keyword2">strtoupper</span>(<span class="php-keyword2">strtr</span>(<span class="php-var">$v</span>[<span class="php-num">0</span>], <span class="php-quote">'- '</span>, <span class="php-quote">'__'</span>));
</span><span id="2775" class="l">                    <span class="php-var">$v</span> = <span class="php-keyword1">isset</span>(<span class="php-var">$v</span>[<span class="php-num">1</span>]) ? <span class="php-keyword2">trim</span>(<span class="php-var">$v</span>[<span class="php-num">1</span>]) : <span class="php-keyword1">NULL</span>;
</span><span id="2776" class="l">
</span><span id="2777" class="l">                    <span class="php-comment">// Gather headers</span>
</span><span id="2778" class="l">                    <span class="php-keyword1">if</span> ( <span class="php-keyword1">isset</span>(<span class="php-var">$_rh</span>[<span class="php-var">$k</span>]) ) {
</span><span id="2779" class="l">                        <span class="php-keyword1">if</span> ( <span class="php-keyword1">isset</span>(<span class="php-var">$v</span>) ) {
</span><span id="2780" class="l">                            <span class="php-keyword1">if</span> ( <span class="php-keyword2">is_array</span>(<span class="php-var">$_rh</span>[<span class="php-var">$k</span>]) ) {
</span><span id="2781" class="l">                                <span class="php-var">$_rh</span>[<span class="php-var">$k</span>][] = <span class="php-var">$v</span>;
</span><span id="2782" class="l">                            }
</span><span id="2783" class="l">                            <span class="php-keyword1">else</span> {
</span><span id="2784" class="l">                                <span class="php-var">$_rh</span>[<span class="php-var">$k</span>] = <span class="php-keyword1">array</span>(<span class="php-var">$_rh</span>[<span class="php-var">$k</span>], <span class="php-var">$v</span>);
</span><span id="2785" class="l">                            }
</span><span id="2786" class="l">                        }
</span><span id="2787" class="l">                    }
</span><span id="2788" class="l">                    <span class="php-keyword1">else</span> {
</span><span id="2789" class="l">                        <span class="php-var">$_rh</span>[<span class="php-var">$k</span>] = <span class="php-var">$v</span>;
</span><span id="2790" class="l">                    }
</span><span id="2791" class="l">                }
</span><span id="2792" class="l">                <span class="php-var">$rsps</span> = <span class="php-keyword1">NULL</span>;
</span><span id="2793" class="l">                <span class="php-var">$_preserve_method</span> = <span class="php-keyword1">true</span>;
</span><span id="2794" class="l">                <span class="php-keyword1">switch</span>(<span class="php-var">$rcode</span>) {
</span><span id="2795" class="l">                   <span class="php-keyword1">case</span> <span class="php-num">301</span>:
</span><span id="2796" class="l">                   <span class="php-keyword1">case</span> <span class="php-num">302</span>:
</span><span id="2797" class="l">                   <span class="php-keyword1">case</span> <span class="php-num">303</span>:
</span><span id="2798" class="l">                         <span class="php-var">$_preserve_method</span> = <span class="php-keyword1">false</span>;
</span><span id="2799" class="l">                   <span class="php-keyword1">case</span> <span class="php-num">307</span>:
</span><span id="2800" class="l">                   <span class="php-keyword1">case</span> <span class="php-num">308</span>:
</span><span id="2801" class="l">                   <span class="php-comment">// repeat request using the same method and post data</span>
</span><span id="2802" class="l">                      <span class="php-keyword1">if</span>( @<span class="php-var">$options</span>[<span class="php-quote">'redirects'</span>] &gt; <span class="php-num">0</span> &amp;&amp; <span class="php-var">$loc</span> = @<span class="php-var">$_rh</span>[<span class="php-quote">'LOCATION'</span>] ) {
</span><span id="2803" class="l">                         <span class="php-keyword1">if</span> ( !<span class="php-keyword1">empty</span>(<span class="php-var">$options</span>[<span class="php-quote">'host'</span>]) ) {
</span><span id="2804" class="l">                            <span class="php-var">$host</span> = <span class="php-var">$options</span>[<span class="php-quote">'host'</span>];
</span><span id="2805" class="l">                         }
</span><span id="2806" class="l">                         <span class="php-keyword2">is_array</span>(<span class="php-var">$loc</span>) <span class="php-keyword1">and</span> <span class="php-var">$loc</span> = <span class="php-keyword2">end</span>(<span class="php-var">$loc</span>);
</span><span id="2807" class="l">                         <span class="php-var">$loc</span> = self::abs_url(<span class="php-var">$loc</span>, <span class="php-keyword2">compact</span>(<span class="php-quote">'host'</span>, <span class="php-quote">'port'</span>, <span class="php-quote">'path'</span>) + <span class="php-keyword1">array</span>(<span class="php-quote">'scheme'</span> =&gt; <span class="php-keyword1">empty</span>(<span class="php-var">$options</span>[<span class="php-quote">'scheme'</span>])?<span class="php-quote">''</span>:<span class="php-var">$options</span>[<span class="php-quote">'scheme'</span>]));
</span><span id="2808" class="l">                         <span class="php-keyword1">unset</span>(<span class="php-var">$_h</span>[<span class="php-quote">'host'</span>], <span class="php-var">$options</span>[<span class="php-quote">'host'</span>], <span class="php-var">$options</span>[<span class="php-quote">'port'</span>], <span class="php-var">$options</span>[<span class="php-quote">'scheme'</span>]);
</span><span id="2809" class="l">                         <span class="php-keyword1">if</span> ( <span class="php-keyword1">isset</span>(<span class="php-var">$options</span>[<span class="php-quote">'redirect_method'</span>]) ) {
</span><span id="2810" class="l">                             <span class="php-var">$redirect_method</span> = <span class="php-var">$options</span>[<span class="php-quote">'redirect_method'</span>];
</span><span id="2811" class="l">                             <span class="php-keyword1">if</span> ( <span class="php-keyword2">is_string</span>(<span class="php-var">$redirect_method</span>) ) {
</span><span id="2812" class="l">                                 <span class="php-var">$options</span>[<span class="php-quote">'method'</span>] = <span class="php-var">$redirect_method</span> = <span class="php-keyword2">strtoupper</span>(<span class="php-var">$redirect_method</span>);
</span><span id="2813" class="l">                                 <span class="php-var">$_preserve_method</span> = <span class="php-keyword1">true</span>;
</span><span id="2814" class="l">                                 <span class="php-keyword1">if</span> ( <span class="php-var">$redirect_method</span> != <span class="php-quote">'POST'</span> &amp;&amp; <span class="php-var">$redirect_method</span> != <span class="php-quote">'PUT'</span> &amp;&amp; <span class="php-var">$redirect_method</span> != <span class="php-quote">'DELETE'</span> ) {
</span><span id="2815" class="l">                                     <span class="php-var">$body</span> = <span class="php-keyword1">NULL</span>;
</span><span id="2816" class="l">                                 }
</span><span id="2817" class="l">                             }
</span><span id="2818" class="l">                             <span class="php-keyword1">else</span> {
</span><span id="2819" class="l">                                 <span class="php-var">$_preserve_method</span> = (bool)<span class="php-var">$redirect_method</span>;
</span><span id="2820" class="l">                             }
</span><span id="2821" class="l">                         }
</span><span id="2822" class="l">                         <span class="php-keyword1">if</span> ( !<span class="php-var">$_preserve_method</span> ) {
</span><span id="2823" class="l">                             <span class="php-var">$body</span> = <span class="php-keyword1">NULL</span>;
</span><span id="2824" class="l">                             <span class="php-keyword1">unset</span>(<span class="php-var">$options</span>[<span class="php-quote">'method'</span>]);
</span><span id="2825" class="l">                         }
</span><span id="2826" class="l">                         --<span class="php-var">$options</span>[<span class="php-quote">'redirects'</span>];
</span><span id="2827" class="l">                         <span class="php-comment">// ??? could save cookies for redirect</span>
</span><span id="2828" class="l">                         <span class="php-keyword1">if</span> ( !<span class="php-keyword1">empty</span>(<span class="php-var">$_rh</span>[<span class="php-quote">'SET_COOKIE'</span>]) &amp;&amp; !<span class="php-keyword1">empty</span>(<span class="php-var">$options</span>[<span class="php-quote">'use_cookies'</span>]) ) {
</span><span id="2829" class="l">                            <span class="php-var">$t</span> = self::parse_cookie((<span class="php-keyword1">array</span>)<span class="php-var">$_rh</span>[<span class="php-quote">'SET_COOKIE'</span>]);
</span><span id="2830" class="l">                            <span class="php-keyword1">if</span> ( <span class="php-var">$t</span> ) {
</span><span id="2831" class="l">                                <span class="php-var">$now</span> = <span class="php-keyword2">time</span>();
</span><span id="2832" class="l">                                <span class="php-comment">// @TODO: Filter out cookies by $c['domain'] and $c['path'] (compare to $loc)</span>
</span><span id="2833" class="l">                                <span class="php-keyword1">foreach</span>(<span class="php-var">$t</span> <span class="php-keyword1">as</span> <span class="php-var">$c</span>) {
</span><span id="2834" class="l">                                    <span class="php-keyword1">if</span> ( <span class="php-keyword1">empty</span>(<span class="php-var">$c</span>[<span class="php-quote">'expires'</span>]) || <span class="php-var">$c</span>[<span class="php-quote">'expires'</span>] &gt;= <span class="php-var">$now</span> ) {
</span><span id="2835" class="l">                                        <span class="php-var">$_h</span>[<span class="php-quote">'cookie'</span>] = (<span class="php-keyword1">empty</span>(<span class="php-var">$_h</span>[<span class="php-quote">'cookie'</span>]) ? <span class="php-quote">''</span> : <span class="php-var">$_h</span>[<span class="php-quote">'cookie'</span>] . <span class="php-quote">'; '</span>) .
</span><span id="2836" class="l">                                                        <span class="php-var">$c</span>[<span class="php-quote">'key'</span>] . <span class="php-quote">'='</span> . <span class="php-var">$c</span>[<span class="php-quote">'value'</span>];
</span><span id="2837" class="l">                                    }
</span><span id="2838" class="l">                                }
</span><span id="2839" class="l">                            }
</span><span id="2840" class="l">                         }
</span><span id="2841" class="l">                         <span class="php-keyword1">return</span> self::http_wr(<span class="php-var">$loc</span>, <span class="php-var">$_h</span>, <span class="php-var">$body</span>, <span class="php-var">$options</span>);
</span><span id="2842" class="l">                      }
</span><span id="2843" class="l">                   <span class="php-keyword1">break</span>;
</span><span id="2844" class="l">                }
</span><span id="2845" class="l">                <span class="php-comment">// Detect body length</span>
</span><span id="2846" class="l">                <span class="php-keyword1">if</span>(@!<span class="php-var">$open</span> || <span class="php-var">$rcode</span> &lt; <span class="php-num">200</span> || <span class="php-var">$rcode</span> == <span class="php-num">204</span> || <span class="php-var">$rcode</span> == <span class="php-num">304</span> || <span class="php-var">$meth</span> == <span class="php-quote">'HEAD'</span>) {
</span><span id="2847" class="l">                    <span class="php-var">$te</span> = <span class="php-num">1</span>;
</span><span id="2848" class="l">                }
</span><span id="2849" class="l">                <span class="php-keyword1">elseif</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$_rh</span>[<span class="php-quote">'TRANSFER_ENCODING'</span>]) &amp;&amp; <span class="php-keyword2">strtolower</span>(<span class="php-var">$_rh</span>[<span class="php-quote">'TRANSFER_ENCODING'</span>]) === <span class="php-quote">'chunked'</span>) {
</span><span id="2850" class="l">                    <span class="php-var">$te</span> = <span class="php-num">3</span>;
</span><span id="2851" class="l">                }
</span><span id="2852" class="l">                <span class="php-keyword1">elseif</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$_rh</span>[<span class="php-quote">'CONTENT_LENGTH'</span>])) {
</span><span id="2853" class="l">                    <span class="php-var">$bl</span> = (int)<span class="php-var">$_rh</span>[<span class="php-quote">'CONTENT_LENGTH'</span>];
</span><span id="2854" class="l">                    <span class="php-var">$te</span> = <span class="php-num">2</span>;
</span><span id="2855" class="l">                }
</span><span id="2856" class="l">                <span class="php-keyword1">switch</span>(<span class="php-var">$te</span>) {
</span><span id="2857" class="l">                   <span class="php-keyword1">case</span> <span class="php-num">1</span>:
</span><span id="2858" class="l">                      <span class="php-keyword1">break</span>;
</span><span id="2859" class="l">                   <span class="php-keyword1">case</span> <span class="php-num">2</span>:
</span><span id="2860" class="l">                      <span class="php-keyword1">while</span>(<span class="php-var">$bl</span> &gt; <span class="php-num">0</span> <span class="php-keyword1">and</span> <span class="php-var">$open</span> &amp;= !<span class="php-keyword2">feof</span>(<span class="php-var">$fs</span>) &amp;&amp; (<span class="php-var">$p</span> = @<span class="php-keyword2">fread</span>(<span class="php-var">$fs</span>, <span class="php-var">$bl</span>))) {
</span><span id="2861" class="l">                         <span class="php-var">$rsps</span> .= <span class="php-var">$p</span>;
</span><span id="2862" class="l">                         <span class="php-var">$bl</span> -= <span class="php-keyword2">strlen</span>(<span class="php-var">$p</span>);
</span><span id="2863" class="l">                      }
</span><span id="2864" class="l">                      <span class="php-keyword1">break</span>;
</span><span id="2865" class="l">                   <span class="php-keyword1">case</span> <span class="php-num">3</span>:
</span><span id="2866" class="l">                      <span class="php-keyword1">while</span>(<span class="php-var">$open</span> &amp;= !<span class="php-keyword2">feof</span>(<span class="php-var">$fs</span>) &amp;&amp; (<span class="php-var">$p</span> = @<span class="php-keyword2">fgets</span>(<span class="php-var">$fs</span>, <span class="php-num">1024</span>))) {
</span><span id="2867" class="l">                         <span class="php-var">$_re</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">';'</span>, <span class="php-keyword2">rtrim</span>(<span class="php-var">$p</span>));
</span><span id="2868" class="l">                         <span class="php-var">$cs</span> = <span class="php-keyword2">reset</span>(<span class="php-var">$_re</span>);
</span><span id="2869" class="l">                         <span class="php-var">$bl</span> = <span class="php-keyword2">hexdec</span>(<span class="php-var">$cs</span>);
</span><span id="2870" class="l">                         <span class="php-keyword1">if</span>(!<span class="php-var">$bl</span>) <span class="php-keyword1">break</span>; <span class="php-comment">// empty chunk</span>
</span><span id="2871" class="l">                          <span class="php-keyword1">while</span>(<span class="php-var">$bl</span> &gt; <span class="php-num">0</span> <span class="php-keyword1">and</span> <span class="php-var">$open</span> &amp;= !<span class="php-keyword2">feof</span>(<span class="php-var">$fs</span>) &amp;&amp; (<span class="php-var">$p</span> = @<span class="php-keyword2">fread</span>(<span class="php-var">$fs</span>, <span class="php-var">$bl</span>))) {
</span><span id="2872" class="l">                             <span class="php-var">$rsps</span> .= <span class="php-var">$p</span>;
</span><span id="2873" class="l">                             <span class="php-var">$bl</span> -= <span class="php-keyword2">strlen</span>(<span class="php-var">$p</span>);
</span><span id="2874" class="l">                          }
</span><span id="2875" class="l">                          @<span class="php-keyword2">fgets</span>(<span class="php-var">$fs</span>, <span class="php-num">3</span>); <span class="php-comment">// \r\n</span>
</span><span id="2876" class="l">                      }
</span><span id="2877" class="l">                      <span class="php-keyword1">if</span>(<span class="php-var">$open</span> &amp;= !<span class="php-keyword2">feof</span>(<span class="php-var">$fs</span>) &amp;&amp; (<span class="php-var">$p</span> = @<span class="php-keyword2">fgets</span>(<span class="php-var">$fs</span>, <span class="php-num">1024</span>))) {
</span><span id="2878" class="l">                         <span class="php-keyword1">if</span>(<span class="php-var">$p</span> = <span class="php-keyword2">rtrim</span>(<span class="php-var">$p</span>)) {
</span><span id="2879" class="l">                            <span class="php-comment">// ??? Trailer Header</span>
</span><span id="2880" class="l">                            <span class="php-var">$v</span> = <span class="php-keyword2">explode</span>(<span class="php-quote">':'</span>, <span class="php-var">$p</span>, <span class="php-num">2</span>);
</span><span id="2881" class="l">                            <span class="php-var">$k</span> = <span class="php-keyword2">strtoupper</span>(<span class="php-keyword2">strtr</span>(<span class="php-var">$v</span>[<span class="php-num">0</span>], <span class="php-quote">'- '</span>, <span class="php-quote">'__'</span>));
</span><span id="2882" class="l">                            <span class="php-var">$v</span> = <span class="php-keyword1">isset</span>(<span class="php-var">$v</span>[<span class="php-num">1</span>]) ? <span class="php-keyword2">trim</span>(<span class="php-var">$v</span>[<span class="php-num">1</span>]) : <span class="php-keyword1">NULL</span>;
</span><span id="2883" class="l">                            <span class="php-var">$_rh</span>[<span class="php-var">$k</span>] = <span class="php-var">$v</span>;
</span><span id="2884" class="l">
</span><span id="2885" class="l">                            <span class="php-comment">// Gather headers</span>
</span><span id="2886" class="l">                            <span class="php-keyword1">if</span> ( <span class="php-keyword1">isset</span>(<span class="php-var">$_rh</span>[<span class="php-var">$k</span>]) ) {
</span><span id="2887" class="l">                                <span class="php-keyword1">if</span> ( <span class="php-keyword1">isset</span>(<span class="php-var">$v</span>) ) {
</span><span id="2888" class="l">                                    <span class="php-keyword1">if</span> ( <span class="php-keyword2">is_array</span>(<span class="php-var">$_rh</span>[<span class="php-var">$k</span>]) ) {
</span><span id="2889" class="l">                                        <span class="php-var">$_rh</span>[<span class="php-var">$k</span>][] = <span class="php-var">$v</span>;
</span><span id="2890" class="l">                                    }
</span><span id="2891" class="l">                                    <span class="php-keyword1">else</span> {
</span><span id="2892" class="l">                                        <span class="php-var">$_rh</span>[<span class="php-var">$k</span>] = <span class="php-keyword1">array</span>(<span class="php-var">$_rh</span>[<span class="php-var">$k</span>], <span class="php-var">$v</span>);
</span><span id="2893" class="l">                                    }
</span><span id="2894" class="l">                                }
</span><span id="2895" class="l">                            }
</span><span id="2896" class="l">                            <span class="php-keyword1">else</span> {
</span><span id="2897" class="l">                                <span class="php-var">$_rh</span>[<span class="php-var">$k</span>] = <span class="php-var">$v</span>;
</span><span id="2898" class="l">                            }
</span><span id="2899" class="l">
</span><span id="2900" class="l">                            @<span class="php-keyword2">fgets</span>(<span class="php-var">$fs</span>, <span class="php-num">3</span>); <span class="php-comment">// \r\n</span>
</span><span id="2901" class="l">                         }
</span><span id="2902" class="l">                      }
</span><span id="2903" class="l">                      <span class="php-keyword1">break</span>;
</span><span id="2904" class="l">                   <span class="php-keyword1">default</span>:
</span><span id="2905" class="l">                          <span class="php-keyword1">while</span>(<span class="php-var">$open</span> &amp;= !<span class="php-keyword2">feof</span>(<span class="php-var">$fs</span>) &amp;&amp; (<span class="php-var">$p</span> = @<span class="php-keyword2">fread</span>(<span class="php-var">$fs</span>, <span class="php-num">1024</span>))) { <span class="php-comment">// ???</span>
</span><span id="2906" class="l">                             <span class="php-var">$rsps</span> .= <span class="php-var">$p</span>;
</span><span id="2907" class="l">                          }
</span><span id="2908" class="l">                      <span class="php-keyword1">break</span>;
</span><span id="2909" class="l">                }
</span><span id="2910" class="l">
</span><span id="2911" class="l">                <span class="php-keyword1">if</span> ( <span class="php-var">$rsps</span> != <span class="php-quote">''</span> &amp;&amp; @<span class="php-var">$options</span>[<span class="php-quote">'decode'</span>] == <span class="php-quote">'gzip'</span> &amp;&amp; @<span class="php-var">$_rh</span>[<span class="php-quote">'CONTENT_ENCODING'</span>] == <span class="php-quote">'gzip'</span> ) {
</span><span id="2912" class="l">                    <span class="php-var">$r</span> = self::<span class="php-keyword2">gzdecode</span>(<span class="php-var">$rsps</span>);
</span><span id="2913" class="l">                    <span class="php-keyword1">if</span>(<span class="php-var">$r</span> !== <span class="php-keyword1">false</span>) {
</span><span id="2914" class="l">                        <span class="php-keyword1">unset</span>(<span class="php-var">$_rh</span>[<span class="php-quote">'CONTENT_ENCODING'</span>]);
</span><span id="2915" class="l">                        <span class="php-var">$rsps</span> = <span class="php-var">$r</span>;
</span><span id="2916" class="l">                    }
</span><span id="2917" class="l">                }
</span><span id="2918" class="l">                <span class="php-var">$ret</span>-&gt;code    = <span class="php-var">$rcode</span>;
</span><span id="2919" class="l">                <span class="php-var">$ret</span>-&gt;msg     = <span class="php-var">$rmsg</span>;
</span><span id="2920" class="l">                <span class="php-var">$ret</span>-&gt;headers = <span class="php-keyword1">isset</span>(<span class="php-var">$_rh</span>) ? <span class="php-var">$_rh</span> : <span class="php-keyword1">NULL</span>;
</span><span id="2921" class="l">                <span class="php-var">$ret</span>-&gt;body    = <span class="php-var">$rsps</span>;
</span><span id="2922" class="l">                <span class="php-var">$ret</span>-&gt;method  = <span class="php-var">$meth</span>;
</span><span id="2923" class="l">                <span class="php-comment">// $ret-&gt;host    = $host;</span>
</span><span id="2924" class="l">                <span class="php-var">$ret</span>-&gt;port    = <span class="php-var">$port</span>;
</span><span id="2925" class="l">                <span class="php-var">$ret</span>-&gt;path    = <span class="php-var">$path</span>;
</span><span id="2926" class="l">                <span class="php-var">$ret</span>-&gt;request = <span class="php-var">$rqst</span>;
</span><span id="2927" class="l">
</span><span id="2928" class="l">                <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="2929" class="l">
</span><span id="2930" class="l">                <span class="php-comment">// Old return:</span>
</span><span id="2931" class="l">                       <span class="php-comment">//     contents  headers  status-code  status-message</span>
</span><span id="2932" class="l">                <span class="php-comment">// return array( $rsps,    @$_rh,   $rcode,      $rmsg,           $host, $port, $path, $rqst  );</span>
</span><span id="2933" class="l">            }
</span><span id="2934" class="l">        }
</span><span id="2935" class="l">       <span class="php-keyword2">fclose</span>(<span class="php-var">$fs</span>);
</span><span id="2936" class="l">
</span><span id="2937" class="l">       <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>; <span class="php-comment">// no response</span>
</span><span id="2938" class="l">    }
</span><span id="2939" class="l">
</span><span id="2940" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="2941" class="l">
</span><span id="2942" class="l">};
</span><span id="2943" class="l">
</span><span id="2944" class="l"><span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="2945" class="l"><span class="php-comment">/**
</span></span><span id="2946" class="l"><span class="php-comment"> *  Represents an HTML Element ( eg div, input etc )
</span></span><span id="2947" class="l"><span class="php-comment"> *  or a collection of elements ( eq jQuery([div, span, ...]) )
</span></span><span id="2948" class="l"><span class="php-comment"> */</span>
</span><span id="2949" class="l"><span class="php-keyword1">class</span> hQuery_Element <span class="php-keyword1">extends</span> hQuery_Node {
</span><span id="2950" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="2951" class="l">    <span class="php-comment">// Iterator</span>
</span><span id="2952" class="l">    <span class="php-keyword1">protected</span> <span class="php-var">$_ich</span> = <span class="php-keyword1">NULL</span>; <span class="php-comment">// Iterator Cache</span>
</span><span id="2953" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="2954" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> toArray(<span class="php-var">$cch</span>=<span class="php-keyword1">true</span>) {
</span><span id="2955" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$cch</span> &amp;&amp; <span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;_ich) &amp;&amp; <span class="php-keyword2">count</span>(<span class="php-var">$this</span>-&gt;ids) === <span class="php-keyword2">count</span>(<span class="php-var">$this</span>-&gt;_ich)) <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;_ich;
</span><span id="2956" class="l">        <span class="php-var">$ret</span> = <span class="php-keyword1">array</span>();
</span><span id="2957" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$cch</span>) {
</span><span id="2958" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$this</span>-&gt;ids <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) {
</span><span id="2959" class="l">                <span class="php-var">$ret</span>[<span class="php-var">$b</span>] = <span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;_ich[<span class="php-var">$b</span>])
</span><span id="2960" class="l">                    ? <span class="php-var">$this</span>-&gt;_ich[<span class="php-var">$b</span>]
</span><span id="2961" class="l">                    : ( <span class="php-var">$this</span>-&gt;_ich[<span class="php-var">$b</span>] = <span class="php-keyword1">new</span> self(<span class="php-var">$this</span>-&gt;doc, <span class="php-keyword1">array</span>(<span class="php-var">$b</span>=&gt;<span class="php-var">$e</span>)) )
</span><span id="2962" class="l">                ;
</span><span id="2963" class="l">            }
</span><span id="2964" class="l">        }
</span><span id="2965" class="l">        <span class="php-keyword1">else</span> {
</span><span id="2966" class="l">            <span class="php-keyword1">foreach</span>(<span class="php-var">$this</span>-&gt;ids <span class="php-keyword1">as</span> <span class="php-var">$b</span> =&gt; <span class="php-var">$e</span>) {
</span><span id="2967" class="l">                <span class="php-var">$ret</span>[<span class="php-var">$b</span>] = <span class="php-keyword1">new</span> self(<span class="php-var">$this</span>-&gt;doc, <span class="php-keyword1">array</span>(<span class="php-var">$b</span>=&gt;<span class="php-var">$e</span>));
</span><span id="2968" class="l">            }
</span><span id="2969" class="l">        }
</span><span id="2970" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$ret</span>;
</span><span id="2971" class="l">    }
</span><span id="2972" class="l">
</span><span id="2973" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="2974" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> __get(<span class="php-var">$name</span>) {
</span><span id="2975" class="l">        <span class="php-keyword1">switch</span>(<span class="php-var">$name</span>) {
</span><span id="2976" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'innerHTML'</span>:
</span><span id="2977" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'html'</span>     : <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;html();
</span><span id="2978" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'outerHtml'</span>: <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;outerHtml();
</span><span id="2979" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'textContent'</span>:
</span><span id="2980" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'text'</span>     : <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;text();
</span><span id="2981" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'attr'</span>     : <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;attr();
</span><span id="2982" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'value'</span>    :
</span><span id="2983" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'val'</span>      : <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;val();
</span><span id="2984" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'nodeName'</span> : <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;nodeName(<span class="php-keyword1">false</span>);
</span><span id="2985" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'parent'</span>   : <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;parent();
</span><span id="2986" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'children'</span> : <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;children();
</span><span id="2987" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'nextElementSibling'</span>     : <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;nextElementSibling();
</span><span id="2988" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'previousElementSibling'</span> : <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;previousElementSibling();
</span><span id="2989" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'className'</span>: <span class="php-var">$name</span> = <span class="php-quote">'class'</span>; <span class="php-keyword1">break</span>;
</span><span id="2990" class="l">        }
</span><span id="2991" class="l">        <span class="php-comment">// return parent::__get($name);</span>
</span><span id="2992" class="l">
</span><span id="2993" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">array_key_exists</span>(<span class="php-var">$name</span>, <span class="php-var">$this</span>-&gt;_prop)) <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;_prop[<span class="php-var">$name</span>];
</span><span id="2994" class="l">        <span class="php-keyword1">switch</span>(<span class="php-var">$name</span>) {
</span><span id="2995" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'id'</span>:
</span><span id="2996" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'class'</span>:
</span><span id="2997" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'alt'</span>:
</span><span id="2998" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'title'</span>:
</span><span id="2999" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'src'</span>:
</span><span id="3000" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'href'</span>:
</span><span id="3001" class="l">            <span class="php-comment">// case 'protocol':</span>
</span><span id="3002" class="l">            <span class="php-comment">// case 'host':</span>
</span><span id="3003" class="l">            <span class="php-comment">// case 'port':</span>
</span><span id="3004" class="l">            <span class="php-comment">// case 'hostname':</span>
</span><span id="3005" class="l">            <span class="php-comment">// case 'pathname':</span>
</span><span id="3006" class="l">            <span class="php-comment">// case 'search':</span>
</span><span id="3007" class="l">            <span class="php-comment">// case 'hash':</span>
</span><span id="3008" class="l">            <span class="php-keyword1">default</span>:
</span><span id="3009" class="l">                <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;attr(<span class="php-var">$name</span>);
</span><span id="3010" class="l">        }
</span><span id="3011" class="l">    }
</span><span id="3012" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="3013" class="l">    <span class="php-comment">// Iterator methods:</span>
</span><span id="3014" class="l">
</span><span id="3015" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> offsetSet(<span class="php-var">$offset</span>, <span class="php-var">$value</span>) {
</span><span id="3016" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">is_null</span>(<span class="php-var">$offset</span>)) {
</span><span id="3017" class="l">            <span class="php-comment">// $this-&gt;_data[] = $value; // ???</span>
</span><span id="3018" class="l">        }
</span><span id="3019" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">is_int</span>(<span class="php-var">$offset</span>)) {
</span><span id="3020" class="l">            <span class="php-var">$i</span> = <span class="php-keyword2">array_slice</span>(<span class="php-var">$this</span>-&gt;ids, <span class="php-var">$offset</span>, <span class="php-num">1</span>, <span class="php-keyword1">true</span>);
</span><span id="3021" class="l">            <span class="php-comment">// ???</span>
</span><span id="3022" class="l">        }
</span><span id="3023" class="l">        <span class="php-keyword1">else</span> {
</span><span id="3024" class="l">            <span class="php-var">$this</span>-&gt;__set(<span class="php-var">$offset</span>, <span class="php-var">$value</span>);
</span><span id="3025" class="l">        }
</span><span id="3026" class="l">    }
</span><span id="3027" class="l">
</span><span id="3028" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> offsetGet(<span class="php-var">$offset</span>) {
</span><span id="3029" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">is_int</span>(<span class="php-var">$offset</span>)) {
</span><span id="3030" class="l">            <span class="php-var">$i</span> = <span class="php-keyword2">array_slice</span>(<span class="php-var">$this</span>-&gt;ids, <span class="php-var">$offset</span>, <span class="php-num">1</span>, <span class="php-keyword1">true</span>);
</span><span id="3031" class="l">            <span class="php-keyword1">return</span> <span class="php-var">$i</span> ? <span class="php-keyword1">new</span> self(<span class="php-var">$this</span>-&gt;doc, <span class="php-var">$i</span>) : <span class="php-keyword1">NULL</span>;
</span><span id="3032" class="l">        }
</span><span id="3033" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;__get(<span class="php-var">$offset</span>);
</span><span id="3034" class="l">    }
</span><span id="3035" class="l">
</span><span id="3036" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> offsetExists(<span class="php-var">$offset</span>) {
</span><span id="3037" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">is_int</span>(<span class="php-var">$offset</span>)) {
</span><span id="3038" class="l">            <span class="php-keyword1">return</span> <span class="php-num">0</span> &lt;= <span class="php-var">$offset</span> &amp;&amp; <span class="php-var">$offset</span> &lt; <span class="php-keyword2">count</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="3039" class="l">        }
</span><span id="3040" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;__isset(<span class="php-var">$offset</span>);
</span><span id="3041" class="l">    }
</span><span id="3042" class="l">
</span><span id="3043" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> offsetUnset(<span class="php-var">$offset</span>) {
</span><span id="3044" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">is_int</span>(<span class="php-var">$offset</span>)) {
</span><span id="3045" class="l">            <span class="php-var">$i</span> = <span class="php-keyword2">array_slice</span>(<span class="php-var">$this</span>-&gt;ids, <span class="php-var">$offset</span>, <span class="php-num">1</span>, <span class="php-keyword1">true</span>);
</span><span id="3046" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$i</span>) {
</span><span id="3047" class="l">                <span class="php-var">$i</span> = <span class="php-keyword2">key</span>(<span class="php-var">$i</span>);
</span><span id="3048" class="l">                <span class="php-keyword1">unset</span>(<span class="php-var">$this</span>-&gt;ids[<span class="php-var">$i</span>], <span class="php-var">$this</span>-&gt;_ich[<span class="php-var">$i</span>]);
</span><span id="3049" class="l">            }
</span><span id="3050" class="l">        }
</span><span id="3051" class="l">        <span class="php-keyword1">else</span> {
</span><span id="3052" class="l">            <span class="php-keyword1">unset</span>(<span class="php-var">$this</span>-&gt;_prop[<span class="php-var">$offset</span>]);
</span><span id="3053" class="l">        }
</span><span id="3054" class="l">    }
</span><span id="3055" class="l">    <span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="3056" class="l">
</span><span id="3057" class="l">    <span class="php-comment">/**
</span></span><span id="3058" class="l"><span class="php-comment">     * Get value of an :input element.
</span></span><span id="3059" class="l"><span class="php-comment">     *
</span></span><span id="3060" class="l"><span class="php-comment">     */</span>
</span><span id="3061" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> val() {
</span><span id="3062" class="l">        <span class="php-keyword1">switch</span>(<span class="php-keyword2">strtoupper</span>(<span class="php-var">$this</span>-&gt;nodeName(<span class="php-keyword1">false</span>))) {
</span><span id="3063" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'TEXTAREA'</span>:
</span><span id="3064" class="l">                <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;html();
</span><span id="3065" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'INPUT'</span>:
</span><span id="3066" class="l">                <span class="php-keyword1">switch</span>(<span class="php-keyword2">strtoupper</span>(<span class="php-var">$this</span>-&gt;attr(<span class="php-quote">'type'</span>))) {
</span><span id="3067" class="l">                    <span class="php-keyword1">case</span> <span class="php-quote">'CHECKBOX'</span>: <span class="php-keyword1">if</span> ( <span class="php-var">$this</span>-&gt;attr(<span class="php-quote">'checked'</span>) === <span class="php-keyword1">false</span> ) <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;
</span><span id="3068" class="l">                    <span class="php-keyword1">default</span>:         <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;attr(<span class="php-quote">'value'</span>);
</span><span id="3069" class="l">                }
</span><span id="3070" class="l">            <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;html();
</span><span id="3071" class="l">            <span class="php-keyword1">case</span> <span class="php-quote">'SELECT'</span>: <span class="php-comment">// ???</span>
</span><span id="3072" class="l">
</span><span id="3073" class="l">            <span class="php-keyword1">default</span>: <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;
</span><span id="3074" class="l">        }
</span><span id="3075" class="l">    }
</span><span id="3076" class="l">
</span><span id="3077" class="l">    <span class="php-comment">/**
</span></span><span id="3078" class="l"><span class="php-comment">     * Override current() for iterations.
</span></span><span id="3079" class="l"><span class="php-comment">     *
</span></span><span id="3080" class="l"><span class="php-comment">     * @return hQuery_Element
</span></span><span id="3081" class="l"><span class="php-comment">     */</span>
</span><span id="3082" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">current</span>() {
</span><span id="3083" class="l">        <span class="php-var">$k</span> = <span class="php-keyword2">key</span>(<span class="php-var">$this</span>-&gt;ids);
</span><span id="3084" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$k</span> === <span class="php-keyword1">NULL</span>) <span class="php-keyword1">return</span> <span class="php-keyword1">false</span>;
</span><span id="3085" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword2">count</span>(<span class="php-var">$this</span>-&gt;ids) == <span class="php-num">1</span>) <span class="php-keyword1">return</span> <span class="php-var">$this</span>;
</span><span id="3086" class="l">        <span class="php-keyword1">if</span>(!<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;_ich[<span class="php-var">$k</span>])) <span class="php-var">$this</span>-&gt;_ich[<span class="php-var">$k</span>] = <span class="php-keyword1">new</span> self(<span class="php-var">$this</span>-&gt;doc, <span class="php-keyword1">array</span>(<span class="php-var">$k</span>=&gt;<span class="php-var">$this</span>-&gt;ids[<span class="php-var">$k</span>]));
</span><span id="3087" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;_ich[<span class="php-var">$k</span>];
</span><span id="3088" class="l">    }
</span><span id="3089" class="l">
</span><span id="3090" class="l">    <span class="php-comment">/**
</span></span><span id="3091" class="l"><span class="php-comment">     * Get the node at $idx position in the set, using cache
</span></span><span id="3092" class="l"><span class="php-comment">     *
</span></span><span id="3093" class="l"><span class="php-comment">     * @param int $idx - index of an element, starts with 0.
</span></span><span id="3094" class="l"><span class="php-comment">     *
</span></span><span id="3095" class="l"><span class="php-comment">     * @return hQuery_Element
</span></span><span id="3096" class="l"><span class="php-comment">     */</span>
</span><span id="3097" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> get(<span class="php-var">$idx</span>) {
</span><span id="3098" class="l">        <span class="php-var">$i</span> = <span class="php-keyword2">array_slice</span>(<span class="php-var">$this</span>-&gt;ids, <span class="php-var">$idx</span>, <span class="php-num">1</span>, <span class="php-keyword1">true</span>);
</span><span id="3099" class="l">        <span class="php-keyword1">if</span>(!<span class="php-var">$i</span>) <span class="php-keyword1">return</span> <span class="php-keyword1">NULL</span>;
</span><span id="3100" class="l">
</span><span id="3101" class="l">        <span class="php-comment">// Try read cache first</span>
</span><span id="3102" class="l">        <span class="php-var">$k</span> = <span class="php-keyword2">key</span>(<span class="php-var">$i</span>);
</span><span id="3103" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$this</span>-&gt;_ich[<span class="php-var">$k</span>])) <span class="php-keyword1">return</span> <span class="php-var">$this</span>-&gt;_ich[<span class="php-var">$k</span>];
</span><span id="3104" class="l">
</span><span id="3105" class="l">        <span class="php-comment">// Create wraper instance for $i</span>
</span><span id="3106" class="l">        <span class="php-var">$o</span> = <span class="php-keyword1">new</span> self(<span class="php-var">$this</span>-&gt;doc, <span class="php-var">$i</span>);
</span><span id="3107" class="l">
</span><span id="3108" class="l">        <span class="php-comment">// Save to cache</span>
</span><span id="3109" class="l">        <span class="php-var">$this</span>-&gt;_ich[<span class="php-var">$k</span>] = <span class="php-var">$o</span>;
</span><span id="3110" class="l">
</span><span id="3111" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$o</span>;
</span><span id="3112" class="l">    }
</span><span id="3113" class="l">
</span><span id="3114" class="l">    <span class="php-comment">/**
</span></span><span id="3115" class="l"><span class="php-comment">     * Get the node at $idx position in the set, no cache, each call creates new instance.
</span></span><span id="3116" class="l"><span class="php-comment">     *
</span></span><span id="3117" class="l"><span class="php-comment">     * @param int $idx - index of an element, starts with 0.
</span></span><span id="3118" class="l"><span class="php-comment">     *
</span></span><span id="3119" class="l"><span class="php-comment">     * @return hQuery_Element
</span></span><span id="3120" class="l"><span class="php-comment">     */</span>
</span><span id="3121" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> eq(<span class="php-var">$idx</span>) {
</span><span id="3122" class="l">        <span class="php-var">$i</span> = <span class="php-keyword2">array_slice</span>(<span class="php-var">$this</span>-&gt;ids, <span class="php-var">$idx</span>, <span class="php-num">1</span>, <span class="php-keyword1">true</span>) <span class="php-keyword1">or</span>
</span><span id="3123" class="l">        <span class="php-var">$i</span> = <span class="php-keyword1">array</span>();
</span><span id="3124" class="l">        <span class="php-comment">// Create wraper instance for $i</span>
</span><span id="3125" class="l">        <span class="php-var">$o</span> = <span class="php-keyword1">new</span> self(<span class="php-var">$this</span>-&gt;doc, <span class="php-var">$i</span>);
</span><span id="3126" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$o</span>;
</span><span id="3127" class="l">    }
</span><span id="3128" class="l">
</span><span id="3129" class="l">    <span class="php-comment">/**
</span></span><span id="3130" class="l"><span class="php-comment">     * Get a slice of current node collection.
</span></span><span id="3131" class="l"><span class="php-comment">     *
</span></span><span id="3132" class="l"><span class="php-comment">     * @param int $idx - start index of an element, starts with 0.
</span></span><span id="3133" class="l"><span class="php-comment">     * @param int $len - OPTIONAL number of element to slice. Defaults to all starting at $idx
</span></span><span id="3134" class="l"><span class="php-comment">     *
</span></span><span id="3135" class="l"><span class="php-comment">     * @return hQuery_Element
</span></span><span id="3136" class="l"><span class="php-comment">     */</span>
</span><span id="3137" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> slice(<span class="php-var">$idx</span>, <span class="php-var">$len</span>=<span class="php-keyword1">NULL</span>) {
</span><span id="3138" class="l">        <span class="php-var">$c</span> = <span class="php-var">$this</span>-&gt;<span class="php-keyword2">count</span>();
</span><span id="3139" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$idx</span> &lt; <span class="php-var">$c</span>) <span class="php-var">$p</span> += <span class="php-var">$c</span>;
</span><span id="3140" class="l">        <span class="php-keyword1">if</span>(<span class="php-var">$idx</span> &lt; <span class="php-var">$c</span>) <span class="php-var">$ids</span> = <span class="php-keyword1">array</span>(); <span class="php-keyword1">else</span>
</span><span id="3141" class="l">        <span class="php-keyword1">if</span>(<span class="php-keyword1">isset</span>(<span class="php-var">$len</span>)) {
</span><span id="3142" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$idx</span> == <span class="php-num">0</span> &amp;&amp; <span class="php-var">$len</span> == <span class="php-var">$c</span>) {
</span><span id="3143" class="l">                <span class="php-keyword1">return</span> <span class="php-var">$this</span>; <span class="php-comment">// ???</span>
</span><span id="3144" class="l">                <span class="php-var">$ids</span> = <span class="php-var">$this</span>-&gt;ids;
</span><span id="3145" class="l">            }
</span><span id="3146" class="l">            <span class="php-var">$ids</span> = <span class="php-keyword2">array_slice</span>(<span class="php-var">$this</span>-&gt;ids, <span class="php-var">$idx</span>, <span class="php-var">$len</span>, <span class="php-keyword1">true</span>);
</span><span id="3147" class="l">        }
</span><span id="3148" class="l">        <span class="php-keyword1">else</span> {
</span><span id="3149" class="l">            <span class="php-keyword1">if</span>(<span class="php-var">$idx</span> == <span class="php-num">0</span>) {
</span><span id="3150" class="l">                <span class="php-keyword1">return</span> <span class="php-var">$this</span>; <span class="php-comment">// ???</span>
</span><span id="3151" class="l">                <span class="php-var">$ids</span> = <span class="php-var">$this</span>-&gt;ids;
</span><span id="3152" class="l">            }
</span><span id="3153" class="l">            <span class="php-var">$ids</span> = <span class="php-keyword2">array_slice</span>(<span class="php-var">$this</span>-&gt;ids, <span class="php-var">$idx</span>, <span class="php-var">$this</span>-&gt;<span class="php-keyword2">count</span>(), <span class="php-keyword1">true</span>);
</span><span id="3154" class="l">        }
</span><span id="3155" class="l">        <span class="php-var">$o</span> = <span class="php-keyword1">new</span> self(<span class="php-var">$this</span>-&gt;doc, <span class="php-var">$ids</span>);
</span><span id="3156" class="l">        <span class="php-var">$o</span>-&gt;_ich = &amp;<span class="php-var">$this</span>-&gt;_ich; <span class="php-comment">// share iterator cache for iteration</span>
</span><span id="3157" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$o</span>;
</span><span id="3158" class="l">    }
</span><span id="3159" class="l">
</span><span id="3160" class="l">    <span class="php-comment">/**
</span></span><span id="3161" class="l"><span class="php-comment">     * Get parent nodes for this collection of nodes.
</span></span><span id="3162" class="l"><span class="php-comment">     *
</span></span><span id="3163" class="l"><span class="php-comment">     * @return hQuery_Element parent
</span></span><span id="3164" class="l"><span class="php-comment">     */</span>
</span><span id="3165" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> parent() {
</span><span id="3166" class="l">        <span class="php-var">$p</span> = <span class="php-var">$this</span>-&gt;_parent();
</span><span id="3167" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$p</span> ? <span class="php-keyword1">new</span> self(<span class="php-var">$this</span>-&gt;doc, <span class="php-var">$p</span>) : <span class="php-keyword1">NULL</span>;
</span><span id="3168" class="l">    }
</span><span id="3169" class="l">
</span><span id="3170" class="l">    <span class="php-comment">/**
</span></span><span id="3171" class="l"><span class="php-comment">     * Get child nodes for this collection of nodes.
</span></span><span id="3172" class="l"><span class="php-comment">     *
</span></span><span id="3173" class="l"><span class="php-comment">     * @return hQuery_Element children
</span></span><span id="3174" class="l"><span class="php-comment">     */</span>
</span><span id="3175" class="l">    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> children() {
</span><span id="3176" class="l">        <span class="php-var">$p</span> = <span class="php-var">$this</span>-&gt;_children();
</span><span id="3177" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$p</span> ? <span class="php-keyword1">new</span> self(<span class="php-var">$this</span>-&gt;doc, <span class="php-var">$p</span>) : <span class="php-keyword1">NULL</span>;
</span><span id="3178" class="l">    }
</span><span id="3179" class="l">
</span><span id="3180" class="l">    <span class="php-comment">/**
</span></span><span id="3181" class="l"><span class="php-comment">     * Get previous element siblings for each of the elements of this collection
</span></span><span id="3182" class="l"><span class="php-comment">     *
</span></span><span id="3183" class="l"><span class="php-comment">     * @return hQuery_Element previousElementSibling
</span></span><span id="3184" class="l"><span class="php-comment">     */</span>
</span><span id="3185" class="l">    <span class="php-keyword1">function</span> previousElementSibling() {
</span><span id="3186" class="l">        <span class="php-var">$p</span> = <span class="php-var">$this</span>-&gt;_prev();
</span><span id="3187" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$p</span> ? <span class="php-keyword1">new</span> self(<span class="php-var">$this</span>-&gt;doc, <span class="php-var">$p</span>) : <span class="php-keyword1">NULL</span>;
</span><span id="3188" class="l">    }
</span><span id="3189" class="l">
</span><span id="3190" class="l">    <span class="php-comment">/**
</span></span><span id="3191" class="l"><span class="php-comment">     * Get next element siblings for each of the elements of this collection
</span></span><span id="3192" class="l"><span class="php-comment">     *
</span></span><span id="3193" class="l"><span class="php-comment">     * @return hQuery_Element nextElementSibling
</span></span><span id="3194" class="l"><span class="php-comment">     */</span>
</span><span id="3195" class="l">    <span class="php-keyword1">function</span> nextElementSibling() {
</span><span id="3196" class="l">        <span class="php-var">$p</span> = <span class="php-var">$this</span>-&gt;_next();
</span><span id="3197" class="l">        <span class="php-keyword1">return</span> <span class="php-var">$p</span> ? <span class="php-keyword1">new</span> self(<span class="php-var">$this</span>-&gt;doc, <span class="php-var">$p</span>) : <span class="php-keyword1">NULL</span>;
</span><span id="3198" class="l">    }
</span><span id="3199" class="l">
</span><span id="3200" class="l">};
</span><span id="3201" class="l">
</span><span id="3202" class="l"><span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="3203" class="l"><span class="php-comment">// namespaced aliases for PHP &gt;= 5.3.0</span>
</span><span id="3204" class="l"><span class="php-keyword1">if</span> ( <span class="php-keyword2">function_exists</span>(<span class="php-quote">'class_alias'</span>) ) {
</span><span id="3205" class="l">    <span class="php-keyword1">foreach</span>(<span class="php-keyword1">array</span>(
</span><span id="3206" class="l">        <span class="php-quote">'hQuery'</span>,
</span><span id="3207" class="l">        <span class="php-quote">'hQuery_Element'</span>,
</span><span id="3208" class="l">        <span class="php-quote">'hQuery_Node'</span>,
</span><span id="3209" class="l">        <span class="php-quote">'hQuery_Context'</span>,
</span><span id="3210" class="l">    ) <span class="php-keyword1">as</span> <span class="php-var">$c</span>) {
</span><span id="3211" class="l">        <span class="php-keyword2">class_alias</span>(<span class="php-var">$c</span>, <span class="php-quote">'duzun\\'</span> . <span class="php-keyword2">strtr</span>(<span class="php-var">$c</span>, <span class="php-quote">'_'</span>, <span class="php-quote">'\\'</span>));
</span><span id="3212" class="l">    }
</span><span id="3213" class="l">}
</span><span id="3214" class="l"><span class="php-comment">// ------------------------------------------------------------------------</span>
</span><span id="3215" class="l">
</span><span id="3216" class="l"><span class="xlang">?&gt;</span>
</span><span id="3217" class="l"></span></code></pre>
</div>
	</div>

	<div id="footer">
		 API documentation generated by <a href="http://apigen.org">ApiGen</a>
	</div>
</div>
<script src="resources/combined.js?e7605d6f3f62e88670949c9fb3bf82bbc7ae203a"></script>
<script src="elementlist.js?296da9a5744d0d9c309355dd98bd45427e5a76ae"></script>
</body>
</html>
